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 --- 32 unchanged lines hidden (view full) --- 41#define __ARCH_X86_PAGETABLE_HH__ 42 43#include <iostream> 44#include <string> 45 46#include "base/bitunion.hh" 47#include "base/misc.hh" 48#include "base/types.hh" |
49#include "base/trie.hh" |
50 51class Checkpoint; 52 53namespace X86ISA 54{ |
55 struct TlbEntry; 56} 57 58typedef Trie<Addr, X86ISA::TlbEntry> TlbEntryTrie; 59 60namespace X86ISA 61{ |
62 BitUnion64(VAddr) 63 Bitfield<20, 12> longl1; 64 Bitfield<29, 21> longl2; 65 Bitfield<38, 30> longl3; 66 Bitfield<47, 39> longl4; 67 68 Bitfield<20, 12> pael1; 69 Bitfield<29, 21> pael2; --- 5 unchanged lines hidden (view full) --- 75 76 struct TlbEntry 77 { 78 // The base of the physical page. 79 Addr paddr; 80 81 // The beginning of the virtual page this entry maps. 82 Addr vaddr; |
83 // The size of the page this represents, in address bits. 84 unsigned logBytes; |
85 86 // Read permission is always available, assuming it isn't blocked by 87 // other mechanisms. 88 bool writable; 89 // Whether this page is accesible without being in supervisor mode. 90 bool user; 91 // Whether to use write through or write back. M5 ignores this and 92 // lets the caches handle the writeback policy. 93 //bool pwt; 94 // Whether the page is cacheable or not. 95 bool uncacheable; 96 // Whether or not to kick this page out on a write to CR3. 97 bool global; 98 // A bit used to form an index into the PAT table. 99 bool patBit; 100 // Whether or not memory on this page can be executed. 101 bool noExec; |
102 // A sequence number to keep track of LRU. 103 uint64_t lruSeq; |
104 |
105 TlbEntryTrie::Handle trieHandle; 106 |
107 TlbEntry(Addr asn, Addr _vaddr, Addr _paddr); 108 TlbEntry() {} 109 110 void 111 updateVaddr(Addr new_vaddr) 112 { 113 vaddr = new_vaddr; 114 } --- 12 unchanged lines hidden --- |