|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1 ! _) d: D- G/ J7 J9 f( ?: N
LDR R4, [R6] ;获取新任务堆栈指针 ( j& K% u; @7 B5 d# X8 d: R
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
& c" H' s" T6 H;这两行代码有何作用呢 * t: @ N. n" D, Q0 U
ADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP 6 w( m. y! m% R4 z: V& T
LDR LR, [SP, #-8] 6 b( j5 s* h& [! Q v$ m
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + P0 c) J# ^; B- r2 w! E8 p
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
" r) V) {! M- R; R6 X& f! vMOV SP, R4 ;设置堆栈指针 " Q; W( s" `6 r# x0 G- i& A5 F" Z
LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum
1 c, S$ D( ~: ^& b& u; ~;恢复新任务的 OsEnterSum
& T" A4 E! n+ t0 h! s) T' l; hLDR R3, =OsEnterSum . I' |/ G6 k) _1 V5 i; q, E3 j
STR R4, [R3] % G. q$ N# r2 m1 y" \" a
MSR SPSR_cxsf, R5 ;恢复 CPSR
6 ]* ^) N: h' W0 u9 MLDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务 ( z0 y& ?* E6 k5 i3 U* \5 b
) X$ i2 a" o5 U6 D1 _/ t |
|