pagetable_walker.hh (9542:683991c46ac8) | pagetable_walker.hh (9701:f02f3b6562d5) |
---|---|
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 --- 73 unchanged lines hidden (view full) --- 82 }; 83 84 friend class WalkerPort; 85 WalkerPort port; 86 87 // State to track each walk of the page table 88 class WalkerState 89 { | 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 --- 73 unchanged lines hidden (view full) --- 82 }; 83 84 friend class WalkerPort; 85 WalkerPort port; 86 87 // State to track each walk of the page table 88 class WalkerState 89 { |
90 friend class Walker; |
|
90 private: 91 enum State { 92 Ready, 93 Waiting, 94 // Long mode 95 LongPML4, LongPDP, LongPD, LongPTE, 96 // PAE legacy mode 97 PAEPDP, PAEPD, PAEPTE, --- 73 unchanged lines hidden (view full) --- 171 PortID idx = InvalidPortID); 172 173 protected: 174 // The TLB we're supposed to load. 175 TLB * tlb; 176 System * sys; 177 MasterID masterId; 178 | 91 private: 92 enum State { 93 Ready, 94 Waiting, 95 // Long mode 96 LongPML4, LongPDP, LongPD, LongPTE, 97 // PAE legacy mode 98 PAEPDP, PAEPD, PAEPTE, --- 73 unchanged lines hidden (view full) --- 172 PortID idx = InvalidPortID); 173 174 protected: 175 // The TLB we're supposed to load. 176 TLB * tlb; 177 System * sys; 178 MasterID masterId; 179 |
180 // The number of outstanding walks that can be squashed per cycle. 181 unsigned numSquashable; 182 183 // Wrapper for checking for squashes before starting a translation. 184 void startWalkWrapper(); 185 |
|
179 // Functions for dealing with packets. 180 bool recvTimingResp(PacketPtr pkt); 181 void recvRetry(); 182 bool sendTiming(WalkerState * sendingState, PacketPtr pkt); 183 184 public: 185 186 void setTLB(TLB * _tlb) --- 7 unchanged lines hidden (view full) --- 194 params() const 195 { 196 return static_cast<const Params *>(_params); 197 } 198 199 Walker(const Params *params) : 200 MemObject(params), port(name() + ".port", this), 201 funcState(this, NULL, NULL, true), tlb(NULL), sys(params->system), | 186 // Functions for dealing with packets. 187 bool recvTimingResp(PacketPtr pkt); 188 void recvRetry(); 189 bool sendTiming(WalkerState * sendingState, PacketPtr pkt); 190 191 public: 192 193 void setTLB(TLB * _tlb) --- 7 unchanged lines hidden (view full) --- 201 params() const 202 { 203 return static_cast<const Params *>(_params); 204 } 205 206 Walker(const Params *params) : 207 MemObject(params), port(name() + ".port", this), 208 funcState(this, NULL, NULL, true), tlb(NULL), sys(params->system), |
202 masterId(sys->getMasterId(name())) | 209 masterId(sys->getMasterId(name())), 210 numSquashable(params->num_squash_per_cycle) |
203 { 204 } 205 }; 206} 207#endif // __ARCH_X86_PAGE_TABLE_WALKER_HH__ | 211 { 212 } 213 }; 214} 215#endif // __ARCH_X86_PAGE_TABLE_WALKER_HH__ |