Browse Source

added a SETABORT method that does not update LR (for HLE'd SVC that does not jump appcore CPU to an IRQ vector)

bunnei 12 years ago
parent
commit
cd7de52fea
1 changed files with 11 additions and 0 deletions
  1. 11 0
      src/core/arm/interpreter/armemu.h

+ 11 - 0
src/core/arm/interpreter/armemu.h

@@ -229,6 +229,17 @@ extern ARMword isize;
     }									\
   while (0)
 
+#define SETABORT_SKIPBRANCH(i, m, d)						\
+  do									\
+    { 									\
+      int SETABORT_mode = (m);						\
+									\
+      ARMul_SetSPSR (state, SETABORT_mode, ARMul_GetCPSR (state));	\
+      ARMul_SetCPSR (state, ((ARMul_GetCPSR (state) & ~(EMODE | TBIT))	\
+			     | (i) | SETABORT_mode));			\
+    }									\
+  while (0)
+
 //#ifndef MODE32
 #define VECTORS 0x20
 #define LEGALADDR 0x03ffffff