zengxy 发表于 2011-1-17 22:48:29

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更新为同样的内容吗?

高手指点

zengxy 发表于 2011-1-18 12:35:01

自己顶一下

peavey 发表于 2011-1-19 11:48:28

LDR   LR, ;好似系恢复sys模式下嘅LR

LDMFD   SP!, {R0-R12, LR, PC }^;好似系恢复SVC模式下嘅LR,这个LR是乜嘢值并不仲要,好似是这样。

不知道有冇理解错,我刚学

zengxy 发表于 2011-1-20 10:01:42

对头!

谢谢!
页: [1]
查看完整版本: uCOS-II 里任务切换时关于LR的一个问题