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(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(RequestPtr req, ThreadContext *tc, Mode mode) const
228{
229 Addr paddr = req->getPaddr();
230
231 AddrRange m5opRange(0xFFFF0000, 0xFFFFFFFF);
232
233 if (m5opRange.contains(paddr)) {
234 req->setFlags(Request::MMAPPED_IPR | Request::GENERIC_IPR |
235 Request::STRICT_ORDER);

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

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

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

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

--- 81 unchanged lines hidden ---