uCOS-II 里任务切换时关于LR的一个问题
OSIntCtxSw_1;获取新任务堆栈指针
LDR R4,
ADD R3, R4, #68 ;17寄存器CPSR,OsEnterSum,R0-R12,LR,SP
MOV SP, R3
LDR LR,
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
MOV SP, R4 ;设置堆栈指针
LDMFD SP!, {R4, R5} ;CPSR,OsEnterSum
;恢复新任务的OsEnterSum
LDR R3, =OsEnterSum
STR R4,
MSR SPSR_cxsf, R5 ;恢复CPSR
LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务
前面一条红色的指令是不是多余的啊?在最后一条语句中不是把Lr更新为同样的内容吗?
高手指点 自己顶一下 LDR LR, ;好似系恢复sys模式下嘅LR
LDMFD SP!, {R0-R12, LR, PC }^;好似系恢复SVC模式下嘅LR,这个LR是乜嘢值并不仲要,好似是这样。
不知道有冇理解错,我刚学 对头!
谢谢!
页:
[1]