diff options
| author | 2014-12-22 22:10:47 -0500 | |
|---|---|---|
| committer | 2014-12-22 23:51:59 -0500 | |
| commit | 8e2accd9746d33116c6398e6f30db5b8b4e1f188 (patch) | |
| tree | c39bd43bf51a9eead458b8743e0cc925947edbd4 /src/core/arm/skyeye_common | |
| parent | Merge pull request #322 from chinhodado/master (diff) | |
| download | yuzu-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.h | 2 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/armemu.h | 7 |
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 |