|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1
$ u. r6 ~. w8 h. [) \/ e3 W* [LDR R4, [R6] ;获取新任务堆栈指针 + C6 W; Y1 z- |. ?* I+ Y+ n
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 3 b+ R: U: u) Z! f7 g$ } W9 S
;这两行代码有何作用呢
0 ~7 t! ], d$ a9 a" P/ I9 ~- TADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP % g% l% Z. ]/ W3 m7 G9 J0 M
LDR LR, [SP, #-8] 1 s( g; V' }9 H4 r, S+ l
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 3 q" L6 W; U8 P- C( G0 l @- w
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式 - u# w$ S, g7 H5 n5 k9 [
MOV SP, R4 ;设置堆栈指针
1 D% F2 m& [" \1 }LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum
2 D, m) O+ `" T$ m* m+ k% V W;恢复新任务的 OsEnterSum ) E8 D2 y% l- C
LDR R3, =OsEnterSum
2 b' s# u. ~5 ]( P: C9 a6 |+ sSTR R4, [R3] 0 @; V1 H2 W$ | ^
MSR SPSR_cxsf, R5 ;恢复 CPSR ; |% W. u5 n9 [: Y
LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务 ) E( r( J0 @9 i6 ]( ^7 W8 I5 a
! Q0 j$ c1 [" V }9 R* I9 [& k( u
|
|