OSIntCtxSw
LDR R2, [SP, #20]
LDR R12, [SP, #16]
MRS R0, CPSR
MSR CPSR_c, #(NoInt | SYS32Mode)
MOV R1, LR
STMFD SP!, {R1-R2}
STMFD SP!, {R4-R12}
MSR CPSR_c, R0
LDMFD SP!, {R4-R7}
ADD SP, SP, #8
MSR CPSR_c, #(NoInt | SYS32Mode)
STMFD SP!, {R4-R7}
LDR R1, =OsEnterSum
LDR R2, [R1]
STMFD SP!, {R2, R3}
以上为保存任务环境的移植代码
MSR CPSR_c, R0
LDMFD SP!, {R4-R7}
ADD SP, SP, #8
这三句是怎么获取R0~R3寄存器,并出栈R12,PC,一直不解, 希望有做过这方面的朋友帮忙看看。
弄错了吧 最后一条句不是中断返回指令就应该是出栈到PC,不然不可能切换任务
弄错了吧 最后一条句不是中断返回指令就应该是出栈到PC,不然不可能切换任务