Deleted Added
sdiff udiff text old ( 12461:a4cb506cda74 ) new ( 12749:223c83ed9979 )
full compact
1/*
2 * Copyright (c) 2007-2008 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

--- 156 unchanged lines hidden (view full) ---

165 if (entry) {
166 trie.remove(entry->trieHandle);
167 entry->trieHandle = NULL;
168 freeList.push_back(entry);
169 }
170}
171
172Fault
173TLB::translateInt(const RequestPtr &req, ThreadContext *tc)
174{
175 DPRINTF(TLB, "Addresses references internal memory.\n");
176 Addr vaddr = req->getVaddr();
177 Addr prefix = (vaddr >> 3) & IntAddrPrefixMask;
178 if (prefix == IntAddrPrefixCPUID) {
179 panic("CPUID memory space not yet implemented!\n");
180 } else if (prefix == IntAddrPrefixMSR) {
181 vaddr = (vaddr >> 3) & ~IntAddrPrefixMask;

--- 37 unchanged lines hidden (view full) ---

219 return NoFault;
220 } else {
221 panic("Access to unrecognized internal address space %#x.\n",
222 prefix);
223 }
224}
225
226Fault
227TLB::finalizePhysical(const RequestPtr &req,
228 ThreadContext *tc, Mode mode) const
229{
230 Addr paddr = req->getPaddr();
231
232 AddrRange m5opRange(0xFFFF0000, 0xFFFFFFFF);
233
234 if (m5opRange.contains(paddr)) {
235 req->setFlags(Request::MMAPPED_IPR | Request::GENERIC_IPR |
236 Request::STRICT_ORDER);

--- 24 unchanged lines hidden (view full) ---

261 paddr - apicRange.start()));
262 }
263 }
264
265 return NoFault;
266}
267
268Fault
269TLB::translate(const RequestPtr &req,
270 ThreadContext *tc, Translation *translation,
271 Mode mode, bool &delayedResponse, bool timing)
272{
273 Request::Flags flags = req->getFlags();
274 int seg = flags & SegmentFlagMask;
275 bool storeCheck = flags & (StoreCheck << FlagShift);
276
277 delayedResponse = false;
278

--- 143 unchanged lines hidden (view full) ---

422 DPRINTF(TLB, "Translated %#x -> %#x.\n", vaddr, vaddr);
423 req->setPaddr(vaddr);
424 }
425
426 return finalizePhysical(req, tc, mode);
427}
428
429Fault
430TLB::translateAtomic(const RequestPtr &req, ThreadContext *tc, Mode mode)
431{
432 bool delayedResponse;
433 return TLB::translate(req, tc, NULL, mode, delayedResponse, false);
434}
435
436void
437TLB::translateTiming(const RequestPtr &req, ThreadContext *tc,
438 Translation *translation, Mode mode)
439{
440 bool delayedResponse;
441 assert(translation);
442 Fault fault =
443 TLB::translate(req, tc, translation, mode, delayedResponse, true);
444 if (!delayedResponse)
445 translation->finish(fault, req, tc, mode);

--- 81 unchanged lines hidden ---