【问题标题】:How to use physical address in MOV instruction?如何在 MOV 指令中使用物理地址?
【发布时间】:2012-07-08 22:05:12
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: c linux assembly linux-kernel x86


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 2017-10-06
        相关资源
        最近更新 更多