73c73
< : BaseCPU(p), thread(NULL)
---
> : BaseCPU(p), thread(NULL), predecoder(NULL)
373,374c373,379
< unsigned int result =
< predecode(extMachInst, thread->readPC(), inst, thread->getTC());
---
> //This should go away once the constructor can be set up properly
> predecoder.setTC(thread->getTC());
> //If more fetch data is needed, pass it in.
> if(predecoder.needMoreBytes())
> predecoder.moreBytes(thread->readPC(), 0, inst);
> else
> predecoder.process();
376,377c381,382
< if (result & ExtMIReady)
< instPtr = StaticInst::decode(extMachInst);
---
> if (predecoder.extMachInstReady())
> instPtr = StaticInst::decode(predecoder.getExtMachInst());
449c454
< } else {
---
> } else if (predecoder.needMoreBytes()) {
451c456
< if (curStaticInst->isLastMicroOp()) {
---
> if (curStaticInst && curStaticInst->isLastMicroOp()) {
470d474
< #if ISA_HAS_DELAY_SLOT
474,476d477
< #else
< thread->setNextPC(thread->readNextPC() + sizeof(MachInst));
< #endif