【发布时间】:2012-07-08 22:05:12
【问题描述】:
我想访问物理地址0xfee00020,这是APIC寄存器的内存映射位置。我想使用“MOV”指令读取或写入数据到这个位置。我应该先进行物理到虚拟地址的转换吗?内联汇编应该如何写一段代码?
谢谢。
【问题讨论】:
标签: c linux assembly linux-kernel x86
我想访问物理地址0xfee00020,这是APIC寄存器的内存映射位置。我想使用“MOV”指令读取或写入数据到这个位置。我应该先进行物理到虚拟地址的转换吗?内联汇编应该如何写一段代码?
谢谢。
【问题讨论】:
标签: c linux assembly linux-kernel x86
您应该使用以下函数而不是直接访问地址(这可能有效,但绝对不可移植):
request_mem_region()ioremap()writeb()/writew()/writel() 或 readb()/readw()/readl()
【讨论】:
是的,您需要先对地址进行物理到虚拟地址的转换,通常使用 ioremap,然后才能使用它。在某些平台上,您可以直接使用 ioremap 的返回值作为指向您要访问的内存的指针。
【讨论】: