changeset f9b675da608a in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=f9b675da608a description: x86: implements vtophys
Calls walker to look up virt. to phys. page mapping diffstat: src/arch/x86/pagetable_walker.hh | 1 + src/arch/x86/system.cc | 1 + src/arch/x86/vtophys.cc | 29 ++++++++++++++++++++++++++--- src/arch/x86/vtophys.hh | 3 --- 4 files changed, 28 insertions(+), 6 deletions(-) diffs (87 lines): diff -r 8b05ff5ef958 -r f9b675da608a src/arch/x86/pagetable_walker.hh --- a/src/arch/x86/pagetable_walker.hh Sun Feb 06 22:14:17 2011 -0800 +++ b/src/arch/x86/pagetable_walker.hh Sun Feb 06 22:14:17 2011 -0800 @@ -48,6 +48,7 @@ #include "mem/mem_object.hh" #include "mem/packet.hh" #include "params/X86PagetableWalker.hh" +#include "sim/faults.hh" class ThreadContext; diff -r 8b05ff5ef958 -r f9b675da608a src/arch/x86/system.cc --- a/src/arch/x86/system.cc Sun Feb 06 22:14:17 2011 -0800 +++ b/src/arch/x86/system.cc Sun Feb 06 22:14:17 2011 -0800 @@ -39,6 +39,7 @@ #include "arch/x86/bios/smbios.hh" #include "arch/x86/bios/intelmp.hh" +#include "arch/x86/isa_traits.hh" #include "arch/x86/regs/misc.hh" #include "arch/x86/system.hh" #include "arch/vtophys.hh" diff -r 8b05ff5ef958 -r f9b675da608a src/arch/x86/vtophys.cc --- a/src/arch/x86/vtophys.cc Sun Feb 06 22:14:17 2011 -0800 +++ b/src/arch/x86/vtophys.cc Sun Feb 06 22:14:17 2011 -0800 @@ -39,19 +39,42 @@ #include <string> +#include "arch/x86/pagetable_walker.hh" +#include "arch/x86/tlb.hh" #include "arch/x86/vtophys.hh" +#include "base/trace.hh" +#include "config/full_system.hh" +#include "cpu/thread_context.hh" +#include "sim/fault.hh" using namespace std; namespace X86ISA { - Addr vtophys(Addr vaddr) + Addr + vtophys(Addr vaddr) { +#if FULL_SYSTEM + panic("Need access to page tables\n"); +#endif return vaddr; } - Addr vtophys(ThreadContext *tc, Addr addr) + Addr + vtophys(ThreadContext *tc, Addr vaddr) { - 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; } } diff -r 8b05ff5ef958 -r f9b675da608a src/arch/x86/vtophys.hh --- a/src/arch/x86/vtophys.hh Sun Feb 06 22:14:17 2011 -0800 +++ b/src/arch/x86/vtophys.hh Sun Feb 06 22:14:17 2011 -0800 @@ -40,12 +40,9 @@ #ifndef __ARCH_X86_VTOPHYS_HH__ #define __ARCH_X86_VTOPHYS_HH__ -#include "arch/x86/isa_traits.hh" -#include "arch/x86/pagetable.hh" #include "base/types.hh" class ThreadContext; -class FunctionalPort; namespace X86ISA { _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev