faults.cc (7741:340b6f01d69b) | faults.cc (8539:7d3ea3c65c66) |
---|---|
1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 629 unchanged lines hidden (view full) --- 638 639void 640FastDataAccessMMUMiss::invoke(ThreadContext *tc, StaticInstPtr inst) 641{ 642 Process *p = tc->getProcessPtr(); 643 TlbEntry entry; 644 bool success = p->pTable->lookup(vaddr, entry); 645 if (!success) { | 1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 629 unchanged lines hidden (view full) --- 638 639void 640FastDataAccessMMUMiss::invoke(ThreadContext *tc, StaticInstPtr inst) 641{ 642 Process *p = tc->getProcessPtr(); 643 TlbEntry entry; 644 bool success = p->pTable->lookup(vaddr, entry); 645 if (!success) { |
646 p->checkAndAllocNextPage(vaddr); 647 success = p->pTable->lookup(vaddr, entry); | 646 if (p->fixupStackFault(vaddr)) 647 success = p->pTable->lookup(vaddr, entry); |
648 } 649 if (!success) { 650 panic("Tried to access unmapped address %#x.\n", vaddr); 651 } else { 652 Addr alignedVaddr = p->pTable->pageAlign(vaddr); 653 tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/, 654 p->M5_pid /*context id*/, false, entry.pte); 655 } --- 57 unchanged lines hidden --- | 648 } 649 if (!success) { 650 panic("Tried to access unmapped address %#x.\n", vaddr); 651 } else { 652 Addr alignedVaddr = p->pTable->pageAlign(vaddr); 653 tc->getDTBPtr()->insert(alignedVaddr, 0 /*partition id*/, 654 p->M5_pid /*context id*/, false, entry.pte); 655 } --- 57 unchanged lines hidden --- |