我正在尝试在清理D缓存之前和之后查看缓存寄存器的内容以及c7中脏位的状态。 此链接:
https://developer.arm.com/docs/ddi0198/latest/programmers-model/register-descriptions/cache-operations-register-c7说:“如果高速缓存中包含脏线,则位30设置为0。如果高速缓存中不包含脏线,则位30设置为1。” 我有一个变量c7Value初始化为15(随机数)
"tc_loop: \n"
"MRC p15, 0, %[c7Value], c7, c10, 3 \n" //Read value of c7 after cleaning
"BNE tc_loop \n"
:[c7Value] "=r"(c7Value)
);
当我在上述循环之后打印c7Value的值时,该值显示为零。我以为如果发现任何高速缓存行脏了,只有第30位会被设置为0。
还有,有没有一种方法可以只读取c7的内容而无需清洗它?
其他寄存器,例如c1可以读取为:“ MRC p15,0,R1,c1,C0,0”,但是没有读取c7的指令。
因此,有人可以告诉我知道如何打印缓存内容和/或读取c7的内容(以检查脏状态)吗?