|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在 OS_CPU_S.s 文件中有如下一段代码,其中有两句代码的作用不是很明白,请解说一下. OSIntCtxSw_1 # d2 d3 O% J0 }! `; i: t
LDR R4, [R6] ;获取新任务堆栈指针 1 E" H, [9 h0 L0 C( t" ~: D3 T
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; * m& F" `1 T0 B+ l' w
;这两行代码有何作用呢 $ T3 O# N0 p: [$ I* ^
ADD SP, R4, #68 ;17 寄存器 CPSR,OsEnterSum,R0-R12,LR,SP 6 A. p& @4 G5 u5 [3 `
LDR LR, [SP, #-8] 3 {' g* k7 H1 |/ r
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 2 Z# v8 N/ R8 I. d
MSR CPSR_c, #(NoInt | SVC32Mode) ;进入管理模式 2 d4 d" @( ?1 q/ D) ~
MOV SP, R4 ;设置堆栈指针
+ Z, G$ T+ d. }! n$ k: J7 |LDMFD SP!,{R4, R5} ;CPSR,OsEnterSum " A* K/ F( z, n
;恢复新任务的 OsEnterSum ( z. _# i9 n5 q& B$ `
LDR R3, =OsEnterSum 5 p* h+ {. e5 o9 S9 h
STR R4, [R3]
( {" q6 c, c& PMSR SPSR_cxsf, R5 ;恢复 CPSR " ~- s( Z7 I* T) S5 f( H: J6 q
LDMFD SP!, {R0-R12, LR, PC }^ ;运行新任务 6 p0 Z6 z/ `# g4 U
) ?) E/ G0 y/ b$ ?% a; J |
|