diff options
author | notaz | 2012-11-21 03:51:26 +0200 |
---|---|---|
committer | notaz | 2012-11-24 04:25:25 +0200 |
commit | eac3852265815a2e57ea9987a2bea2fcadd3f022 (patch) | |
tree | 9e9babd69a94178c44a47516fb79da67d998acab /libpcsxcore | |
parent | 305c8c935f912467121a473f945a42a325034417 (diff) | |
download | pcsx_rearmed-eac3852265815a2e57ea9987a2bea2fcadd3f022.tar.gz pcsx_rearmed-eac3852265815a2e57ea9987a2bea2fcadd3f022.tar.bz2 pcsx_rearmed-eac3852265815a2e57ea9987a2bea2fcadd3f022.zip |
gte: avoid fno-strict-aliasing
Diffstat (limited to 'libpcsxcore')
-rw-r--r-- | libpcsxcore/gte.c | 9 | ||||
-rw-r--r-- | libpcsxcore/r3000a.h | 14 |
2 files changed, 14 insertions, 9 deletions
diff --git a/libpcsxcore/gte.c b/libpcsxcore/gte.c index dc56b7f..62fc7f3 100644 --- a/libpcsxcore/gte.c +++ b/libpcsxcore/gte.c @@ -26,11 +26,6 @@ #include "gte.h" #include "psxmem.h" -typedef struct psxCP2Regs { - psxCP2Data CP2D; /* Cop2 data registers */ - psxCP2Ctrl CP2C; /* Cop2 control registers */ -} psxCP2Regs; - #define VX(n) (n < 3 ? regs->CP2D.p[n << 1].sw.l : regs->CP2D.p[9].sw.l) #define VY(n) (n < 3 ? regs->CP2D.p[n << 1].sw.h : regs->CP2D.p[10].sw.l) #define VZ(n) (n < 3 ? regs->CP2D.p[(n << 1) + 1].sw.l : regs->CP2D.p[11].sw.l) @@ -264,7 +259,7 @@ static inline u32 limE_(psxCP2Regs *regs, u32 result) { #ifndef FLAGLESS static inline u32 MFC2(int reg) { - psxCP2Regs *regs = (psxCP2Regs *)&psxRegs.CP2D; + psxCP2Regs *regs = &psxRegs.CP2; switch (reg) { case 1: case 3: @@ -299,7 +294,7 @@ static inline u32 MFC2(int reg) { } static inline void MTC2(u32 value, int reg) { - psxCP2Regs *regs = (psxCP2Regs *)&psxRegs.CP2D; + psxCP2Regs *regs = &psxRegs.CP2; switch (reg) { case 15: gteSXY0 = gteSXY1; diff --git a/libpcsxcore/r3000a.h b/libpcsxcore/r3000a.h index 76f42bc..13aaa59 100644 --- a/libpcsxcore/r3000a.h +++ b/libpcsxcore/r3000a.h @@ -163,11 +163,21 @@ enum { PSXINT_COUNT }; +typedef struct psxCP2Regs { + psxCP2Data CP2D; /* Cop2 data registers */ + psxCP2Ctrl CP2C; /* Cop2 control registers */ +} psxCP2Regs; + typedef struct { psxGPRRegs GPR; /* General Purpose Registers */ psxCP0Regs CP0; /* Coprocessor0 Registers */ - psxCP2Data CP2D; /* Cop2 data registers */ - psxCP2Ctrl CP2C; /* Cop2 control registers */ + union { + struct { + psxCP2Data CP2D; /* Cop2 data registers */ + psxCP2Ctrl CP2C; /* Cop2 control registers */ + }; + psxCP2Regs CP2; + }; u32 pc; /* Program counter */ u32 code; /* The instruction */ u32 cycle; |