我最近使用cortex R8(缓存大小为32k,256sets,4way),并错误地读取了缓存大小,如下所示:
//忘记选择d缓存,但直接读取缓存大小
mrc p15 1,r0,c0,c0,0
在r0中返回0表示缓存大小为0。
然后我通过set / way使缓存无效,如下所示:
mcr p15 0,r2,c7,c6,2
当r2中填充的值不为零(如0x20、0x40)时,pc似乎停止获取指令。它不会遇到任何异常,也不会继续运行。
所以,我的问题是:
1)如果在读取d缓存大小时忘记选择D缓存,我们是否会因设置/方式失败而使d缓存失效?
2)在arm cpu(类似于r8的armv7)中哪些情况会停止获取指令?
任何建议将不胜感激。