请教:平台是6678,ccs5.4,使用CSL库函数 CACHE_disableCaching 禁止cache 0x8000000地址
CACHE_disableCaching(128);
调用 CACHE_getMemRegionInfo (129, &pcx, &pfx); 读取pcx的值 仍然是1,所以没起作用。
怀疑是当前模式是user mode,而修改MAR寄存器需要supervisor mode ,不知道是不是这个原因。
请问怎么查看当前的模式,如果要进入supervisor mode怎么操作,谢谢。
han yang1:
回复 chenpjh:
进中断会切换到supervisor模式。我在仿真器调试下通过CACHE_disableCaching(176)禁止cache,而 CACHE_getMemRegionInfo (176, &pcx, &pfx); 读出pcx的值仍是1,而实际上这一段地址似乎cache被禁止了,因为我的算法处理时间一下增加了好多。这个情况不明白是怎么回事。
chenpjh:
回复 han yang1:
设置cacheable寄存器的这段MMR,系统是不进行cache的(由MAR1控制,用户不可改,PC=0),因而读出来的内容肯定是对的。可能是下面的原因:
是不是要先执行一下asm("MFENCE"),因为改了cacheable设置之后,需要延时读才行。