From 5943f0fc84ba51d8341a97437b798225fd36da56 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:11 -0500 Subject: ARM: Ignore writing a bad mode to CPSR with MSR. --- src/arch/arm/insts/static_inst.hh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/arch/arm/insts') diff --git a/src/arch/arm/insts/static_inst.hh b/src/arch/arm/insts/static_inst.hh index c26053cef..33453bec6 100644 --- a/src/arch/arm/insts/static_inst.hh +++ b/src/arch/arm/insts/static_inst.hh @@ -177,7 +177,11 @@ class ArmStaticInst : public StaticInst if (bits(byteMask, 0)) { if (privileged) { bitMask = bitMask | mask(7, 6); - bitMask = bitMask | mask(5); + if (!badMode((OperatingMode)(val & mask(5)))) { + bitMask = bitMask | mask(5); + } else { + warn_once("Ignoring write of bad mode to CPSR.\n"); + } } if (affectState) bitMask = bitMask | (1 << 5); -- cgit v1.2.3