在用户态和内核中写模块读取ID_AA64DFR0_EL1和ID_AA64DFR1_EL1,发现两个寄存器的值在用户态读取的值与内核中读取的值不同,这个怎么理解?
读取代码差不多如下:
asm("mrs x0, ID_AA64DFR0_EL1;")
另外,在spec中找到类似解释的地方,也没理解到,如下:
希望有人帮忙解惑一下,谢谢
ID_AA64DFR0_EL1 后缀表示只有 EL1 可以正常访问。 如果在 EL0 用户空间访问, 可能是 你所使用的系统OS 提供了一个虚拟访问的 函数接口。因此两者读到的内容可能是不同。
具体差异,需要查看你对应的 OS 函数接口实现。