要设置用户工作在svc模式,是通过程序状态寄存器来设置的,
程序状态寄存器有cpsr跟spsr,设置工作模式主要是设置cpsr,由手册可知,要设置svc模式,只要设置cpsr的M位为10011即可。
设置思路可以分为两步,第一步把这五位全部清零,第二步,根据位置置一。
然后在reset处加上 bl set_svc
set_svc: mrs r0, cpsr bic r0, r0,#0x1f orr r0, r0,0#d3 msr cpsr, r0
完成设置。
之所以是d3而不是13,是因为要把spsr的I位跟F位设置为1,屏蔽FIQ跟IRQ。
转载请注明原文地址: https://ju.6miu.com/read-674242.html