在ARM926EJ中打印缓存寄存器c7的内容

时间:2018-11-27 06:58:45

标签: c caching assembly inline-assembly arm9

我正在尝试在清理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的内容(以检查脏状态)吗?

0 个答案:

没有答案