1/* 2 * Copyright (c) 2007 The Hewlett-Packard Development Company 3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 25 unchanged lines hidden (view full) --- 34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 * Authors: Gabe Black 38 */ 39 40#include <string> 41 |
42#include "arch/x86/pagetable_walker.hh" 43#include "arch/x86/tlb.hh" |
44#include "arch/x86/vtophys.hh" |
45#include "base/trace.hh" 46#include "config/full_system.hh" 47#include "cpu/thread_context.hh" 48#include "sim/fault.hh" |
49 50using namespace std; 51 52namespace X86ISA 53{ |
54 Addr 55 vtophys(Addr vaddr) |
56 { |
57#if FULL_SYSTEM 58 panic("Need access to page tables\n"); 59#endif |
60 return vaddr; 61 } 62 |
63 Addr 64 vtophys(ThreadContext *tc, Addr vaddr) |
65 { |
66#if FULL_SYSTEM 67 Walker *walker = tc->getDTBPtr()->getWalker(); 68 Addr size; 69 Addr addr = vaddr; 70 Fault fault = walker->startFunctional(tc, addr, size, BaseTLB::Read); 71 if (fault != NoFault) 72 panic("vtophys page walk returned fault\n"); 73 Addr masked_addr = vaddr & (size - 1); 74 Addr paddr = addr | masked_addr; 75 DPRINTF(VtoPhys, "vtophys(%#x) -> %#x\n", vaddr, paddr); 76 return paddr; 77#endif 78 return vaddr; |
79 } 80} |