DACR在ARM上读/写

时间:2016-03-12 20:46:50

标签: android linux assembly arm

我正在尝试在运行Linux的ARM设备上读取和写入DACR(Android on nexus 5 :))。我有一个内核模块。相关的instructions如下:

MRC p15, 0, <Rd>, c3, c0, 0 ; Read DACR
MCR p15, 0, <Rd>, c3, c0, 0 ; Write DACR

我在组件里面使用C代码。我写了以下内容来读取当前的DACR值:

unsigned int x = 0;
__asm__("MRC p15, 0, r1, c3, c0, 0;" : "=r" (x));
 printk(KERN_INFO "DACR read - value = %u", x);

上面没有崩溃内核,读出的值是3920437248

我无法正确写入DACR写入指令。我试图遵循这个question并执行以下操作(将所有1写入DACR进行测试),但设备崩溃并重新启动:

__asm__("MVN r1, #0;");
__asm__("MCR p15, 0, r1, c3, c0, 0;");

有人可以建议如何正确写入DACR吗?

如何参数化上述指令 - 例如使用x的值初始化DACR,以下是正确的:

__asm__("MCR p15, 0, %0, c3, c0, 0;" :: "r" (x));

1 个答案:

答案 0 :(得分:1)

哦,你正确地写了正确的寄存器。

问题是,问题是这样的:

  

我正试图在高速公路上驾驶汽车时使用倒档。我试图按照手册中的指示将变速杆稳固地移动到“R”位置,但我的变速箱现在已经在整个路上。任何人都可以建议如何正确使用倒档吗?

您正在使用直播系统。内核已经使用域。它需要访问权限才能正常工作。如果通过将所有内容标记为Manager并删除所有权限检查来声明开放季节,则copy-on-write不再有效;每个进程都会通过初始映射开始废弃零页,而不是触发真实后备页的分配;猫与狗共同生活;混乱。