Deleted Added
sdiff udiff text old ( 11874:663bac0bb1c9 ) new ( 12140:fab402159cdf )
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

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

327 if (m5Reg.submode != SixtyFourBitMode ||
328 (flags & (AddrSizeFlagBit << FlagShift)))
329 vaddr &= mask(32);
330 // If paging is enabled, do the translation.
331 if (m5Reg.paging) {
332 DPRINTF(TLB, "Paging enabled.\n");
333 // The vaddr already has the segment base applied.
334 TlbEntry *entry = lookup(vaddr);
335 if (!entry) {
336 if (FullSystem) {
337 Fault fault = walker->start(tc, translation, req, mode);
338 if (timing || fault != NoFault) {
339 // This gets ignored in atomic mode.
340 delayedResponse = true;
341 return fault;
342 }
343 entry = lookup(vaddr);
344 assert(entry);
345 } else {
346 DPRINTF(TLB, "Handling a TLB miss for "
347 "address %#x at pc %#x.\n",
348 vaddr, tc->instAddr());
349
350 Process *p = tc->getProcessPtr();
351 TlbEntry newEntry;
352 bool success = p->pTable->lookup(vaddr, newEntry);
353 if (!success && mode != Execute) {
354 // Check if we just need to grow the stack.
355 if (p->fixupStackFault(vaddr)) {
356 // If we did, lookup the entry for the new page.
357 success = p->pTable->lookup(vaddr, newEntry);

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

440
441Walker *
442TLB::getWalker()
443{
444 return walker;
445}
446
447void
448TLB::serialize(CheckpointOut &cp) const
449{
450 // Only store the entries in use.
451 uint32_t _size = size - freeList.size();
452 SERIALIZE_SCALAR(_size);
453 SERIALIZE_SCALAR(lruSeq);
454
455 uint32_t _count = 0;

--- 41 unchanged lines hidden ---