执行DC ZVA后就触发异常了

快速链接:
.
个人博客笔记导读目录(全部)

  • 付费专栏-付费课程 【购买须知】:
  • 【精选】ARMv8/ARMv9架构入门到精通-[目录]

在kernel里调用dc zva指令后就卡住了,也没陷入异常,cpu不往下走了。

思考和分析

1、软件维护cache的指令有三类,详细请参见下面的链接:
软件维护cache的三类指令
其中dc zva是清0指令,是操作系统&软件中最不长使用的一类指令。

2、dc zva指令依赖DZCID_EL0系统寄存器的配置, 详情请参考AArch64-dczid_el0
执行DC ZVA后就触发异常了_第1张图片
DZP表示指令是否被允许;
BS表示清0的block size, 例如BS=9时,那么每次清0是2KB

3、如果步骤2检查过了,没啥问题,那么继续分析。

可以检查一下地址属性,如果确认地址属性没有问题,

4、大概率是总线卡住了,这个操作会触发一笔一致性的写,先把其他核的缓存打掉,再更新成0.
可以改成单核启动试试。

5、如果你已经是单核启动,仍然可能是总线卡住,或时钟停了
可以dump波形看一下,看看是不是总线卡住了

6、也可能是emu版本问题 ,裁剪,soc集成方面的问题
既然是pxp,就可能是存在的问题,裁剪,soc集成方面的问题。

你可能感兴趣的:(ARM,arm,armv9,cache,armv8,mmu)