快速链接:
.
个人博客笔记导读目录(全部)
- 付费专栏-付费课程 【购买须知】:
- 【精选】ARMv8/ARMv9架构入门到精通-[目录]
在kernel里调用dc zva
指令后就卡住了,也没陷入异常,cpu不往下走了。
1、软件维护cache的指令有三类,详细请参见下面的链接:
软件维护cache的三类指令
其中dc zva
是清0指令,是操作系统&软件中最不长使用的一类指令。
2、dc zva
指令依赖DZCID_EL0
系统寄存器的配置, 详情请参考AArch64-dczid_el0
DZP
表示指令是否被允许;
BS
表示清0的block size, 例如BS=9时,那么每次清0是2KB
3、如果步骤2检查过了,没啥问题,那么继续分析。
可以检查一下地址属性,如果确认地址属性没有问题,
4、大概率是总线卡住了,这个操作会触发一笔一致性的写,先把其他核的缓存打掉,再更新成0.
可以改成单核启动试试。
5、如果你已经是单核启动,仍然可能是总线卡住,或时钟停了
可以dump波形看一下,看看是不是总线卡住了
6、也可能是emu版本问题 ,裁剪,soc集成方面的问题
既然是pxp,就可能是存在的问题,裁剪,soc集成方面的问题。