41a42,43
> #include "arch/x86/pagetable_walker.hh"
> #include "arch/x86/tlb.hh"
42a45,48
> #include "base/trace.hh"
> #include "config/full_system.hh"
> #include "cpu/thread_context.hh"
> #include "sim/fault.hh"
48c54,55
< Addr vtophys(Addr vaddr)
---
> Addr
> vtophys(Addr vaddr)
49a57,59
> #if FULL_SYSTEM
> panic("Need access to page tables\n");
> #endif
53c63,64
< Addr vtophys(ThreadContext *tc, Addr addr)
---
> Addr
> vtophys(ThreadContext *tc, Addr vaddr)
55c66,78
< return addr;
---
> #if FULL_SYSTEM
> Walker *walker = tc->getDTBPtr()->getWalker();
> Addr size;
> Addr addr = vaddr;
> Fault fault = walker->startFunctional(tc, addr, size, BaseTLB::Read);
> if (fault != NoFault)
> panic("vtophys page walk returned fault\n");
> Addr masked_addr = vaddr & (size - 1);
> Addr paddr = addr | masked_addr;
> DPRINTF(VtoPhys, "vtophys(%#x) -> %#x\n", vaddr, paddr);
> return paddr;
> #endif
> return vaddr;