ARMv8中,取消了协处理器,之前协处理器实现的功能,全部由系统寄存器来是实现。对于系统寄存器的访问,使用mrs,msr指令来访问。
指令编码如下:
L: 1, mrs,读取系统寄存器值到通用寄存器中
L: 0, msr,将通用寄存器值写入到系统寄存器中
而系统寄存器的编码,由op1,CRn,CRm,op2来决定。如下图所示,更多的系统寄存器的编码,查看arm-spec。
比如,我要读取 OSDTRRX_EL1 系统寄存器,就可以使用 mrs 指令
mrs x0, OSDTRRX_EL1
op1,CRn,CRm,op2的编码组合有很多,arm并没有将所有的组合,均定义系统寄存器。对于未使用的编码组合,arm允许实现自定义这些系统寄存器的功能,比如gic的寄存器。
如下图,