打印
[ZLG-ARM]

周工:请教uC/OS OSIntCtxSw_1问题

[复制链接]
2042|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fent|  楼主 | 2007-1-23 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


OSIntCtxSw_1
    
        LDR     R4, [R6]
        ADD     SP, R4, #68  
        LDR     LR, [SP, #-8]
        MSR     CPSR_c, #(NoInt | SVC32Mode)   
        MOV     SP, R4       

        LDMFD   SP!, {R4, R5}    
                                     
        LDR     R3, =OsEnterSum
        STR     R4, [R3]
    
        MSR     SPSR_cxsf, R5   
        LDMFD   SP!, {R0-R12, LR, PC }^

在上面这段新任务切换代码中, LDR  LR, [SP, #-8]这一句是不是多余的,还是有其他什么功能?我个人觉得LDMFD SP!, {R0-R12, LR, PC }^这一句已经处理了LR.
   请教周工和各位高手! 
 

相关帖子

沙发
wl80382000| | 2007-1-23 14:48 | 只看该作者

111

一直没看他的ucos代码  这么看来  和我的差不多么。。。

 LDR     LR, [SP, #-8]  这句是在取lr     lr有2个

使用特权

评论回复
板凳
wl80382000| | 2007-1-23 14:52 | 只看该作者

。。

细节很多   你就记住  lr有2个   然后慢慢看吧

使用特权

评论回复
地板
fent|  楼主 | 2007-1-23 14:57 | 只看该作者

这个问题有人问过,但没有人回答!

LDR     LR, [SP, #-8] 这句是从栈中取出用户模式的LR,
但是后边的 LDMFD   SP!, {R0-R12, LR, PC }^ 中也有这个操作,都不知道是自己理解错的还是另有用途!?
请各位大虾指点!先谢了 !

使用特权

评论回复
5
fent|  楼主 | 2007-1-23 15:07 | 只看该作者

程序到这里是系统模式

程序到这里实际上是系统模式,在这句  LDR     LR, [SP, #-8] 中,LR就是系统模式的LR,也就是用户模式的LR ,而后面的操作 LDMFD   SP!, {R0-R12, LR, PC }^ 也是对用户的寄存器操作,因此,感觉起来 LDR     LR, [SP, #-8]是多余的!

使用特权

评论回复
6
bqt| | 2007-1-23 20:19 | 只看该作者

re:

程序到这里是管理模式,^是不能在用户和系统模式下用的,呵呵

使用特权

评论回复
7
fent|  楼主 | 2007-1-24 15:24 | 只看该作者

to bqt :

是系统模式!往前看就知道了 !

使用特权

评论回复
8
fent|  楼主 | 2007-1-24 15:25 | 只看该作者

周公在吗?

使用特权

评论回复
9
bqt| | 2007-1-24 17:30 | 只看该作者

re:

    你回去翻翻书,看看SVC32Mode是什么模式?
    再次强调,^是不能在用户和系统模式下用的,因为用户和系统模式下没有SPSR
    wl80382000说的不错


    不过你执着的精神还是值得赞赏,呵呵

使用特权

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

本版积分规则

8

主题

16

帖子

0

粉丝