const bool isRead = bits(machInst, 20);
- if (miscReg == MISCREG_NOP) {
+ switch (miscReg) {
+ case MISCREG_NOP:
return new NopInst(machInst);
- } else if (miscReg == NUM_MISCREGS) {
+ case NUM_MISCREGS:
return new Unknown(machInst);
- } else if (miscReg == MISCREG_DCCISW) {
- return new WarnUnimplemented(isRead ? "mrc dccisw" : "mcr dcisw",
- machInst);
- } else {
+ case MISCREG_DCCISW:
+ return new WarnUnimplemented(
+ isRead ? "mrc dccisw" : "mcr dcisw", machInst);
+ case MISCREG_DCCIMVAC:
+ return new WarnUnimplemented(
+ isRead ? "mrc dccimvac" : "mcr dcimvac", machInst);
+ default:
if (isRead) {
return new Mrc15(machInst, rt, (IntRegIndex)miscReg);
} else {
MISCREG_CP15_START,
MISCREG_SCTLR = MISCREG_CP15_START,
MISCREG_DCCISW,
+ MISCREG_DCCIMVAC,
MISCREG_CONTEXTIDR,
MISCREG_TPIDRURW,
MISCREG_TPIDRURO,
MISCREG_CP15DSB,
MISCREG_CP15DMB,
MISCREG_DCCMVAU,
- MISCREG_DCCIMVAC,
MISCREG_CP15_END,
"cpsr", "spsr", "spsr_fiq", "spsr_irq", "spsr_svc",
"spsr_mon", "spsr_und", "spsr_abt",
"fpsr", "fpsid", "fpscr", "fpexc",
- "sctlr", "dccisw", "contextidr", "tpidrurw", "tpidruro", "tpidrprw",
+ "sctlr", "dccisw", "dccimvac",
+ "contextidr", "tpidrurw", "tpidruro", "tpidrprw",
"ctr", "tcmtr", "mpuir", "mpidr", "midr",
"id_pfr0", "id_pfr1", "id_dfr0", "id_afr0",
"id_mmfr0", "id_mmfr1", "id_mmfr2", "id_mmfr3",
"drbar", "irbar", "drsr", "irsr", "dracr", "iracr",
"rgnr", "icialluis", "bpiallis", "iciallu", "icimvau",
"cp15isb", "bpiall", "bpimva", "dcimvac", "dcisw", "dccmvac", "mccsw",
- "cp15dsb", "cp15dmb", "dccmvau", "dccimvac",
+ "cp15dsb", "cp15dmb", "dccmvau",
"nop", "raz"
};