读取寄存器值_ARM访问实现自定义系统寄存器

本文介绍了ARMv8架构中如何使用mrs和msr指令读写系统寄存器,特别是针对未定义的编码组合如何实现自定义系统寄存器,并给出了访问自定义寄存器的格式和宏定义示例。
摘要由CSDN通过智能技术生成

ARMv8中,取消了协处理器,之前协处理器实现的功能,全部由系统寄存器来是实现。对于系统寄存器的访问,使用mrs,msr指令来访问。

指令编码如下:

4c9e2b8cd05c648ec3cbc074a9b5eeda.png

L: 1, mrs,读取系统寄存器值到通用寄存器中

L: 0, msr,将通用寄存器值写入到系统寄存器中

而系统寄存器的编码,由op1,CRn,CRm,op2来决定。如下图所示,更多的系统寄存器的编码,查看arm-spec。

78c3514675ad906922c93af9ddade96a.png

比如,我要读取 OSDTRRX_EL1 系统寄存器,就可以使用 mrs 指令

mrs x0, OSDTRRX_EL1

op1,CRn,CRm,op2的编码组合有很多,arm并没有将所有的组合,均定义系统寄存器。对于未使用的编码组合,arm允许实现自定义这些系统寄存器的功能,比如gic的寄存器。

如下图,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>