我正在使用运行 Linux 内核的 ARM Cortex A-8 设备进行一些实验。
我可以毫无问题地访问和读取 L2 缓存锁定寄存器的值:
asm volatile ("mrc p15, 1, %0, c9, c0, 0" : "=r" (i));
当我尝试写回该值时,设备立即崩溃:
asm volatile ("mcr p15, 1, %0, c9, c0, 0" : : "r" (i));
该代码作为内核模块运行,因此没有权限问题。
我想知道在写那个寄存器值之前我是否遗漏了什么特别的东西?