|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1
3 @ _1 p3 q! \5 ~ ~: gLDR R4, [R6] ;获取新任务堆栈指针 . C' A/ r1 n" d
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + o$ f0 S1 v9 l, B; G6 f# c
;这两行代码有何作用呢
. D% E$ P) W+ PADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP 7 Y. D8 m9 R1 t+ B" l' Q; t
LDR LR, [SP, #-8]
y5 V, P8 k9 }/ u& m;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; & J. } F+ p I: h1 q; C* G3 g
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式
, e; T" Q9 X( \: G# f, N- VMOV SP, R4 ;设置堆栈指针
$ c, L& ?1 F, I. i" ELDMFD SP!,{R4, R5} ;CPSR,OsEnterSum
: G9 }7 `& d( E: }) M;恢复新任务的 OsEnterSum ; z( s1 C! d) _* H1 R
LDR R3, =OsEnterSum ; F5 l, U: i) v! ^
STR R4, [R3] 2 ^3 ~( ]$ Z- G: R3 }0 a' a- Z
MSR SPSR_cxsf, R5 ;恢复 CPSR
; o& o" W5 K s% X# {LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务
& f3 V$ k$ {1 p3 x2 O0 p, e V7 I& F$ d& q# N; ~
|
|