如何在MOV指令中使用物理地址?

时间:2012-07-08 22:05:12

标签: c linux assembly linux-kernel x86

我想访问物理地址0xfee00020,它是APIC寄存器的存储器映射的位置。我想使用“MOV”指令读取或写入此位置的数据。我应该先进行物理到虚拟地址转换吗?如何在内联汇编中编写代码片?

感谢。

2 个答案:

答案 0 :(得分:4)

您应该使用以下功能而不是直接访问地址(可能有效,但绝对不可移植):

  1. request_mem_region()
  2. ioremap()
  3. writeb()/writew()/writel()readb()/readw()/readl()

答案 1 :(得分:3)

是的,您需要在地址上进行物理到虚拟地址转换,通常使用ioremap,然后才能使用它。在某些平台上,您可以直接使用ioremap的返回值作为指向您要访问的内存的指针。