ARM: Make sure the upc is zeroed when vectoring to a fault.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:17 +0000 (12:58 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:17 +0000 (12:58 -0500)
src/arch/arm/faults.cc

index 0de5db5278072387d7eb6471961ba0659a0c7666..3dd0b7f2f914465ec3bfcab30a300bb7b4c5ed0c 100644 (file)
@@ -143,6 +143,7 @@ ArmFault::invoke(ThreadContext *tc)
     tc->setPC(newPc);
     tc->setNextPC(newPc + cpsr.t ? 2 : 4 );
     tc->setMicroPC(0);
+    tc->setNextMicroPC(1);
 }
 
 void
@@ -189,6 +190,8 @@ SupervisorCall::invoke(ThreadContext *tc)
     // Advance the PC since that won't happen automatically.
     tc->setPC(tc->readNextPC());
     tc->setNextPC(tc->readNextNPC());
+    tc->setMicroPC(0);
+    tc->setNextMicroPC(1);
 }
 
 #endif // FULL_SYSTEM