tlb.cc (6737:b3ab661715ac) tlb.cc (6738:44010fc924d4)
1/*
2 * Copyright (c) 2007-2008 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

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

632 Process *p = tc->getProcessPtr();
633 TlbEntry newEntry;
634 bool success = p->pTable->lookup(vaddr, newEntry);
635 if (!success && mode != Execute) {
636 p->checkAndAllocNextPage(vaddr);
637 success = p->pTable->lookup(vaddr, newEntry);
638 }
639 if (!success) {
1/*
2 * Copyright (c) 2007-2008 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

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

632 Process *p = tc->getProcessPtr();
633 TlbEntry newEntry;
634 bool success = p->pTable->lookup(vaddr, newEntry);
635 if (!success && mode != Execute) {
636 p->checkAndAllocNextPage(vaddr);
637 success = p->pTable->lookup(vaddr, newEntry);
638 }
639 if (!success) {
640 const char *modeStr = "";
641 if (mode == Execute)
642 modeStr = "execute";
643 else if (mode == Read)
644 modeStr = "read";
645 else if (mode == Write)
646 modeStr = "write";
647 else
648 modeStr = "?";
649 panic("Tried to %s unmapped address %#x.\n",
650 modeStr, vaddr);
640 if (req->isPrefetch()) {
641 return new PageFault(vaddr, true, mode, true, false);
642 } else {
643 const char *modeStr = "";
644 if (mode == Execute)
645 modeStr = "execute";
646 else if (mode == Read)
647 modeStr = "read";
648 else if (mode == Write)
649 modeStr = "write";
650 else
651 modeStr = "?";
652 panic("Tried to %s unmapped address %#x.\n",
653 modeStr, vaddr);
654 }
651 } else {
652 Addr alignedVaddr = p->pTable->pageAlign(vaddr);
653 DPRINTF(TLB, "Mapping %#x to %#x\n", alignedVaddr,
654 newEntry.pageStart());
655 entry = insert(alignedVaddr, newEntry);
656 }
657 DPRINTF(TLB, "Miss was serviced.\n");
658#endif

--- 112 unchanged lines hidden ---
655 } else {
656 Addr alignedVaddr = p->pTable->pageAlign(vaddr);
657 DPRINTF(TLB, "Mapping %#x to %#x\n", alignedVaddr,
658 newEntry.pageStart());
659 entry = insert(alignedVaddr, newEntry);
660 }
661 DPRINTF(TLB, "Miss was serviced.\n");
662#endif

--- 112 unchanged lines hidden ---