Just panicing in readMiscReg() doesn't work because a speculative access
in the o3 model can end the simulation.
cpsr.t = pc.thumb() ? 1 : 0;
return cpsr;
}
- if (misc_reg >= MISCREG_CP15_UNIMP_START &&
- misc_reg < MISCREG_CP15_END) {
+ if (misc_reg >= MISCREG_CP15_UNIMP_START)
panic("Unimplemented CP15 register %s read.\n",
miscRegName[misc_reg]);
- }
+
switch (misc_reg) {
case MISCREG_CLIDR:
warn_once("The clidr register always reports 0 caches.\n");
// Read/write, priveleged only.
default:
+ if (miscReg >= MISCREG_CP15_UNIMP_START)
+ return new FailUnimplemented(csprintf("%s %s",
+ isRead ? "mrc" : "mcr", miscRegName[miscReg]).c_str(),
+ machInst);
if (isRead) {
return new Mrc15(machInst, rt, (IntRegIndex)miscReg);
} else {