diff --git a/src/arch/arm/types.hh b/src/arch/arm/types.hh index a679686c7..e270813ef 100644 --- a/src/arch/arm/types.hh +++ b/src/arch/arm/types.hh @@ -333,6 +333,10 @@ namespace ArmISA nextThumb(false); } else { warn("Bad interworking branch address %#x.\n", newPC); + // This state is UNPREDICTABLE in the ARM architecture + // The easy thing to do is just mask off the bit and + // stay in the current mode, so we'll do that. + newPC &= ~mask(2); } } npc(newPC);