|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1
# C" B: [0 Y, Y& a( A3 A6 aLDR R4, [R6] ;获取新任务堆栈指针
& ^7 {3 ~- ~# h% b;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 c3 v0 ^! e7 j* };这两行代码有何作用呢 - r0 H$ A8 y6 J* t ~1 `+ n
ADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP : f% g9 N& u2 k; p1 x
LDR LR, [SP, #-8] 6 M& H0 @, q$ M
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/ m( o2 h) i7 Y0 wMSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式 / z8 R+ O _ f4 Z Z
MOV SP, R4 ;设置堆栈指针
: X; @4 |% X2 |; e& bLDMFD SP!,{R4, R5} ;CPSR,OsEnterSum % D) \+ |/ u+ o- g& m1 e
;恢复新任务的 OsEnterSum % I" q: M/ `. M8 Q
LDR R3, =OsEnterSum
, L# D! h. H0 D2 PSTR R4, [R3] 1 p" k/ _, F2 L M L- m! g
MSR SPSR_cxsf, R5 ;恢复 CPSR ' d) d7 ?. `% y
LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务 / y& z3 \6 N0 U7 [5 D) B
: Z% C; u C' z' j
|
|