本文共 278 字,大约阅读时间需要 1 分钟。
Linux系统和bootloader应该运行在svc模式(supervisor),这可以通过修改程序状态寄存器来设置。
ARM运行模式:程序状态寄存器:其中M[4:0]用于设置运行模式。
汇编代码:
reset: bl set_svcset_svc: mrs r0, cpsr bic r0, r0, #0x1f orr r0, r0, #0xd3 msr cpsr, r0 mov pc, lr
即先对后五位清0,然后置1;orr r0, r0, #0xd3的作用不仅仅是修改运行模式,还屏蔽了IRQ中断和FIQ中断