1/* 2 * Copyright (c) 2002-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; --- 452 unchanged lines hidden (view full) --- 461void 462BaseSimpleCPU::advancePC(Fault fault) 463{ 464 //Since we're moving to a new pc, zero out the offset 465 fetchOffset = 0; 466 if (fault != NoFault) { 467 curMacroStaticInst = StaticInst::nullStaticInstPtr; 468 predecoder.reset(); |
469 thread->setMicroPC(0); 470 thread->setNextMicroPC(1); |
471 fault->invoke(tc); |
472 } else { 473 //If we're at the last micro op for this instruction 474 if (curStaticInst && curStaticInst->isLastMicroop()) { 475 //We should be working with a macro op 476 assert(curMacroStaticInst); 477 //Close out this macro op, and clean up the 478 //microcode state 479 curMacroStaticInst = StaticInst::nullStaticInstPtr; --- 18 unchanged lines hidden (view full) --- 498 499 Addr oldpc; 500 do { 501 oldpc = thread->readPC(); 502 system->pcEventQueue.service(tc); 503 } while (oldpc != thread->readPC()); 504} 505 |