我正在为ARM Cortex A9处理器编写裸机代码(无操作系统)。
我需要读取一个只能在管理员模式下访问的寄存器(多处理器关联寄存器,MPIDR)。
当我处于用户模式并尝试执行以下指令(进入管理程序模式)时,调试器没有任何反应。
MSR CPSR_C, #0x13
如果我尝试读取MPIDR寄存器
,我的程序将进入未定义模式请你知道我错过了什么吗?
当我使用调试器窗口,并强制CPSR寄存器的前五位到b10011时,它可以工作,我去主管。
答案 0 :(得分:5)
使用直接写入CPSR的指令无法在模式之间切换
用户模式下的模式位。正确的方法是使用svc
(主管电话)并执行所要求的必要指令。
答案 1 :(得分:1)
使用cps指令,例如
# Disable ABT, IRQ, FIQ and set SVC mode
cpsid aif, #0x13