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; |
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 |
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), |
209 masterId(sys->getMasterId(name())), 210 numSquashable(params->num_squash_per_cycle) |
211 { 212 } 213 }; 214} 215#endif // __ARCH_X86_PAGE_TABLE_WALKER_HH__ |