(ARM ASSEMBLY)MSR CPSR_C,#0x13不起作用

时间:2013-12-18 08:27:50

标签: assembly arm cortex-a8

我正在为ARM Cortex A9处理器编写裸机代码(无操作系统)。

我需要读取一个只能在管理员模式下访问的寄存器(多处理器关联寄存器,MPIDR)。

当我处于用户模式并尝试执行以下指令(进入管理程序模式)时,调试器没有任何反应。

MSR CPSR_C, #0x13

如果我尝试读取MPIDR寄存器

,我的程序将进入未定义模式

请你知道我错过了什么吗?

当我使用调试器窗口,并强制CPSR寄存器的前五位到b10011时,它可以工作,我去主管。

2 个答案:

答案 0 :(得分:5)

使用直接写入CPSR的指令无法在模式之间切换 用户模式下的模式位。正确的方法是使用svc(主管电话)并执行所要求的必要指令。

答案 1 :(得分:1)

使用cps指令,例如

# Disable ABT, IRQ, FIQ and set SVC mode
cpsid aif, #0x13