设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
功能型操作系统 —— LinuxSir.cn
›
Linux小型、嵌入式系统
›
问一下arm7的MSR指令
返回列表
查看:
1175
|
回复:
7
问一下arm7的MSR指令
[复制链接]
KMnO4
KMnO4
当前离线
积分
356
IP卡
狗仔卡
发表于 2005-3-30 16:56:10
|
显示全部楼层
|
阅读模式
我调试的时候
执行
MSR CPSR R0
发现SP(R13)寄存器的值居然改变了。
这是怎么回事?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
KMnO4
KMnO4
当前离线
积分
356
IP卡
狗仔卡
楼主
|
发表于 2005-3-30 17:06:40
|
显示全部楼层
测试代码如下
mov R13,#0x30
STMFD SP!,{R0-R1}
MRS R0,CPSR
MSR CPSR,R0
MVN R1,#0xFF
AND R0,R0,R1
ORR R0,R0, #0xD3
MSR CPSR,R0
LDMFD SP!,{R0-R1}
复制代码
我在执行到ORR之前,各寄存器都正常。
在执行到第二个MSR的时候,SP的值就加了2,再执行LDMFD的时候,SP又加了8。
LR寄存器的值也有改变.
初学,请教熟悉arm的兄弟!谢了.
回复
支持
反对
使用道具
举报
显身卡
KMnO4
KMnO4
当前离线
积分
356
IP卡
狗仔卡
楼主
|
发表于 2005-3-30 17:15:23
|
显示全部楼层
注.这样做是因为我用的这个汇编器不支持CPSR_c的写法,所以只好迂回一下.
上述程序的目的是把MCU设成SVC模式.并不影响R0,R1
回复
支持
反对
使用道具
举报
显身卡
KMnO4
KMnO4
当前离线
积分
356
IP卡
狗仔卡
楼主
|
发表于 2005-3-30 17:27:50
|
显示全部楼层
MSR CPSR_c, #(NO_INT | SVC32_MODE)
我的问题就是,编译器不支持 cpsr_c的写法.
如何重新实现这条语句?
回复
支持
反对
使用道具
举报
显身卡
jetking
jetking
当前离线
积分
561
IP卡
狗仔卡
发表于 2005-4-1 21:38:06
|
显示全部楼层
有点记不清了,手头也没书。
是不是因为不同的处理器模式有不同的sp物理寄存器?
回复
支持
反对
使用道具
举报
显身卡
jarodwang
jarodwang
当前离线
积分
94
IP卡
狗仔卡
发表于 2005-4-4 11:04:45
|
显示全部楼层
CPSR_c的意思是指CPSR中的控制位,即低八位CPSR[7:0].
而在ARM处理器中只有MSR可以直接设置CPSR或SPSR的值.
回复
支持
反对
使用道具
举报
显身卡
jarodwang
jarodwang
当前离线
积分
94
IP卡
狗仔卡
发表于 2005-4-13 20:56:45
|
显示全部楼层
在u-boot的源代码中找到了你要的答案,方法如下:
/* set the cpu to SVC32 mode */
mrs r0, cpsr /* cpsr -> r0 */
bic r0, r0, #0x1f /* r0 AND 11100000 */
orr r0, r0, #0x13 /* r0 OR 00010011 */
msr cpsr, r0 /* r0 -> cpsr */
要是想不影响r0和r1,换成r2就可以了.
回复
支持
反对
使用道具
举报
显身卡
robinswan
robinswan
当前离线
积分
866
IP卡
狗仔卡
发表于 2005-4-15 12:54:57
|
显示全部楼层
是不是改变了CPU的模式,
而每个模式都有不同的stack,
所以 stack 也切换了, sp 也改变了?
我猜的,不是太清楚。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表