base.cc (4522:3043823ff963) | base.cc (4539:6eeeea62b7c4) |
---|---|
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; --- 386 unchanged lines hidden (view full) --- 395 instPtr = StaticInst::decode(predecoder.getExtMachInst()); 396 } else { 397 stayAtPC = true; 398 fetchOffset += sizeof(MachInst); 399 } 400 401 //If we decoded an instruction and it's microcoded, start pulling 402 //out micro ops | 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; --- 386 unchanged lines hidden (view full) --- 395 instPtr = StaticInst::decode(predecoder.getExtMachInst()); 396 } else { 397 stayAtPC = true; 398 fetchOffset += sizeof(MachInst); 399 } 400 401 //If we decoded an instruction and it's microcoded, start pulling 402 //out micro ops |
403 if (instPtr && instPtr->isMacroOp()) { | 403 if (instPtr && instPtr->isMacroop()) { |
404 curMacroStaticInst = instPtr; 405 curStaticInst = curMacroStaticInst-> | 404 curMacroStaticInst = instPtr; 405 curStaticInst = curMacroStaticInst-> |
406 fetchMicroOp(thread->readMicroPC()); | 406 fetchMicroop(thread->readMicroPC()); |
407 } else { 408 curStaticInst = instPtr; 409 } 410 } else { 411 //Read the next micro op from the macro op 412 curStaticInst = curMacroStaticInst-> | 407 } else { 408 curStaticInst = instPtr; 409 } 410 } else { 411 //Read the next micro op from the macro op 412 curStaticInst = curMacroStaticInst-> |
413 fetchMicroOp(thread->readMicroPC()); | 413 fetchMicroop(thread->readMicroPC()); |
414 } 415 416 //If we decoded an instruction this "tick", record information about it. 417 if(curStaticInst) 418 { 419#if TRACING_ON 420 traceData = Trace::getInstRecord(curTick, tc, curStaticInst, 421 thread->readPC()); --- 48 unchanged lines hidden (view full) --- 470 fetchOffset = 0; 471 if (fault != NoFault) { 472 curMacroStaticInst = StaticInst::nullStaticInstPtr; 473 fault->invoke(tc); 474 thread->setMicroPC(0); 475 thread->setNextMicroPC(1); 476 } else { 477 //If we're at the last micro op for this instruction | 414 } 415 416 //If we decoded an instruction this "tick", record information about it. 417 if(curStaticInst) 418 { 419#if TRACING_ON 420 traceData = Trace::getInstRecord(curTick, tc, curStaticInst, 421 thread->readPC()); --- 48 unchanged lines hidden (view full) --- 470 fetchOffset = 0; 471 if (fault != NoFault) { 472 curMacroStaticInst = StaticInst::nullStaticInstPtr; 473 fault->invoke(tc); 474 thread->setMicroPC(0); 475 thread->setNextMicroPC(1); 476 } else { 477 //If we're at the last micro op for this instruction |
478 if (curStaticInst && curStaticInst->isLastMicroOp()) { | 478 if (curStaticInst && curStaticInst->isLastMicroop()) { |
479 //We should be working with a macro op 480 assert(curMacroStaticInst); 481 //Close out this macro op, and clean up the 482 //microcode state 483 curMacroStaticInst = StaticInst::nullStaticInstPtr; 484 thread->setMicroPC(0); 485 thread->setNextMicroPC(1); 486 } --- 25 unchanged lines hidden --- | 479 //We should be working with a macro op 480 assert(curMacroStaticInst); 481 //Close out this macro op, and clean up the 482 //microcode state 483 curMacroStaticInst = StaticInst::nullStaticInstPtr; 484 thread->setMicroPC(0); 485 thread->setNextMicroPC(1); 486 } --- 25 unchanged lines hidden --- |