在ARM Architecture Reference Manual手册中
2.2 Processor modes
表明svc模式时需要设置0b10111,但是这里的寄存器在哪里呢?
>>在A2.5的状态寄存器中表明了设置模式
可以通过这是M[4:0]位来使CPU进入svc模式,通过阅读文章了解到,这些位是有访问权限的。
设置cpu为svc模式:
-
/*
-
* set the cpu to SVC32 mode
-
*/
-
mrs r0,cpsr
-
bic r0,r0,#0x1f
-
orr r0,r0,#0xd3
-
msr cpsr,r0
本来如果只是进入svc模式应该是orr r0,r0,#0x13才对。但是uboot中却是#0xd3,arm启动时需要关闭IRQ和FIQ所以I位和F位都要置1.
那么就是0xd3了。
阅读(576) | 评论(0) | 转发(0) |