关于OSIntCtxSw()这个函数,在移植代码里出现了一个定义,和一个宏定义
1.定义(部分):
OSIntCtxSw
;下面为保存任务环境
LDR R2, [SP, #20] ;获取PC
LDR R12, [SP, #16] ;获取R12
MRS R0, CPSR
MSR CPSR_c, #(NoInt | SYS32Mode)
MOV R1, LR
STMFD SP!, {R1-R2} ;保存LR,PC
STMFD SP!, {R4-R12} ;保存R4-R12
MSR CPSR_c, R0
LDMFD SP!, {R4-R7} ;获取R0-R3
ADD SP, SP, #8 ;出栈R12,PC
并且对于这个定义,也做了可外部引用的声明 EXPORT OSIntCtxSw
2宏定义
#define OSIntCtxSw() return
请问,在系统调用OSIntCtxSw()这个函数的时候,到底执行的是哪个代码 |