summaryrefslogtreecommitdiff
path: root/src/core/arm/skyeye_common
diff options
context:
space:
mode:
authorGravatar Lioncash2014-12-22 22:10:47 -0500
committerGravatar Lioncash2014-12-22 23:51:59 -0500
commit8e2accd9746d33116c6398e6f30db5b8b4e1f188 (patch)
treec39bd43bf51a9eead458b8743e0cc925947edbd4 /src/core/arm/skyeye_common
parentMerge pull request #322 from chinhodado/master (diff)
downloadyuzu-8e2accd9746d33116c6398e6f30db5b8b4e1f188.tar.gz
yuzu-8e2accd9746d33116c6398e6f30db5b8b4e1f188.tar.xz
yuzu-8e2accd9746d33116c6398e6f30db5b8b4e1f188.zip
armemu: Fix construction of the CPSR
Diffstat (limited to 'src/core/arm/skyeye_common')
-rw-r--r--src/core/arm/skyeye_common/armdefs.h2
-rw-r--r--src/core/arm/skyeye_common/armemu.h7
2 files changed, 5 insertions, 4 deletions
diff --git a/src/core/arm/skyeye_common/armdefs.h b/src/core/arm/skyeye_common/armdefs.h
index 28a4a0db4..34eb5aaf7 100644
--- a/src/core/arm/skyeye_common/armdefs.h
+++ b/src/core/arm/skyeye_common/armdefs.h
@@ -198,7 +198,7 @@ struct ARMul_State
198 //ARMword translate_pc; 198 //ARMword translate_pc;
199 199
200 /* add armv6 flags dyf:2010-08-09 */ 200 /* add armv6 flags dyf:2010-08-09 */
201 ARMword GEFlag, EFlag, AFlag, QFlags; 201 ARMword GEFlag, EFlag, AFlag, QFlag;
202 //chy:2003-08-19, used in arm v5e|xscale 202 //chy:2003-08-19, used in arm v5e|xscale
203 ARMword SFlag; 203 ARMword SFlag;
204#ifdef MODET 204#ifdef MODET
diff --git a/src/core/arm/skyeye_common/armemu.h b/src/core/arm/skyeye_common/armemu.h
index 7f7c0e682..e1b286f0f 100644
--- a/src/core/arm/skyeye_common/armemu.h
+++ b/src/core/arm/skyeye_common/armemu.h
@@ -34,7 +34,7 @@
34#define ZBIT (1L << 30) 34#define ZBIT (1L << 30)
35#define CBIT (1L << 29) 35#define CBIT (1L << 29)
36#define VBIT (1L << 28) 36#define VBIT (1L << 28)
37#define SBIT (1L << 27) 37#define QBIT (1L << 27)
38#define IBIT (1L << 7) 38#define IBIT (1L << 7)
39#define FBIT (1L << 6) 39#define FBIT (1L << 6)
40#define IFBITS (3L << 6) 40#define IFBITS (3L << 6)
@@ -156,13 +156,14 @@
156#define R15PCMODE (state->Reg[15] & (R15PCBITS | R15MODEBITS)) 156#define R15PCMODE (state->Reg[15] & (R15PCBITS | R15MODEBITS))
157#define R15MODE (state->Reg[15] & R15MODEBITS) 157#define R15MODE (state->Reg[15] & R15MODEBITS)
158 158
159#define ECC ((NFLAG << 31) | (ZFLAG << 30) | (CFLAG << 29) | (VFLAG << 28) | (SFLAG << 27)) 159#define ECC ((NFLAG << 31) | (ZFLAG << 30) | (CFLAG << 29) | (VFLAG << 28) | (QFLAG << 27))
160#define EINT (IFFLAGS << 6) 160#define EINT (IFFLAGS << 6)
161#define ER15INT (IFFLAGS << 26) 161#define ER15INT (IFFLAGS << 26)
162#define EMODE (state->Mode) 162#define EMODE (state->Mode)
163#define EGEBITS (state->GEFlag & 0x000F0000)
163 164
164#ifdef MODET 165#ifdef MODET
165#define CPSR (ECC | EINT | EMODE | (TFLAG << 5)) 166#define CPSR (ECC | EGEBITS | (EFLAG << 9) | (AFLAG << 8) | EINT | (TFLAG << 5) | EMODE)
166#else 167#else
167#define CPSR (ECC | EINT | EMODE) 168#define CPSR (ECC | EINT | EMODE)
168#endif 169#endif