Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379626
  • 博文数量: 87
  • 博客积分: 983
  • 博客等级: 准尉
  • 技术积分: 685
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-25 07:20
文章分类

全部博文(87)

文章存档

2016年(1)

2015年(3)

2014年(55)

2013年(13)

2012年(15)

分类: 嵌入式

2014-01-27 20:07:20

原文地址:ORR R0,R0,#R1_nF:OR:R1_iA 作者:暴风lay

                             ORR R0,R0,#R1_nF:OR:R1_iA
 
终于看懂这是啥玩样了!
 
我是先看到这东西才开始疑惑的:
这是S3C2440手册关于时钟介绍时的一部分,很明显它扯到了协处理器P15的C1寄存器,让我们来看看这是啥:
原来iA位和nF位是控制CPU总线模式的:
orr r0,r0,#R1_nF:OR:R1_iA
这命令的意思肯定是让CPU的总线模式从“fast bus mode”变为“asynchronous bus mode”
怎么理解#R1_nF:OR:R1_iA这东西,刚开始以为这是arm指令的某个命令,网上找到有人把它理解成条件运算符(exp1?exp2:exp3;),其实它就是对r0寄存器的30,31位置“1”的一条伪代码。所以我们在bootloader里会看到这样的代码:

       mrc p15,0,r0,c1,c0,0

       orr r0,r0,#0xc0000000;R1_nF:OR:R1_iA

       mcr p15,0,r0,c1,c0,0

所以 #R1_nF:OR:R1_iA 就是 #0xc0000000的意思,我还纠结的半天,傻,哈哈
                 
                                                                                  LAY
阅读(864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~