打印

周立功ucos移植困惑2

[复制链接]
1751|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vipchenvip|  楼主 | 2012-2-7 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于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()这个函数的时候,到底执行的是哪个代码

相关帖子

沙发
xinzha| | 2012-2-8 09:00 | 只看该作者
在新版的代码中没有看到宏定义
#define OSIntCtxSw()    return,
至于要用哪个要看你的编译链接选项,如果都被编译链接就可能会报错,应该不会存在一段c代码指向两个OSIntCtxSw的可能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

65

帖子

1

粉丝