|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1 3 m1 i# I# Q. i2 ^
LDR R4, [R6] ;获取新任务堆栈指针 ' t# k( I. \$ D% R, p
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; & J$ F K$ B3 f/ N' s4 S
;这两行代码有何作用呢
4 N- z0 Q1 e, j f5 ]8 JADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP # E V& T8 G2 x9 k, m9 ?
LDR LR, [SP, #-8]
6 n+ B/ M5 n7 ]; p3 H# [;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; & h. ^/ E* ~) G
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式 * @6 P. j0 Q1 j9 }
MOV SP, R4 ;设置堆栈指针
4 V) D$ V& m, _; Z. d0 C2 y2 {; j3 R8 ZLDMFD SP!,{R4, R5} ;CPSR,OsEnterSum . N6 i9 U& r& ^4 h: i; p2 I0 v4 a
;恢复新任务的 OsEnterSum 5 |. t( Z f3 g9 E& f
LDR R3, =OsEnterSum
- Z# @5 _! N: F4 RSTR R4, [R3] ) Y9 v/ w# K( y' a6 i
MSR SPSR_cxsf, R5 ;恢复 CPSR
9 P! H4 z& Y) Z& r9 U. E* WLDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务
$ {1 g2 L* i8 X v+ a% E
/ a$ W8 O8 d# | |
|