Fix PCSX on big-endian systems
[pcsx_rearmed.git] / libpcsxcore / psxmem.h
index fbf5f67..a7c6dd1 100644 (file)
@@ -26,7 +26,7 @@ extern "C" {
 
 #include "psxcommon.h"
 
-#if defined(__BIGENDIAN__)
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
 
 #define _SWAP16(b) ((((unsigned char *)&(b))[0] & 0xff) | (((unsigned char *)&(b))[1] & 0xff) << 8)
 #define _SWAP32(b) ((((unsigned char *)&(b))[0] & 0xff) | ((((unsigned char *)&(b))[1] & 0xff) << 8) | ((((unsigned char *)&(b))[2] & 0xff) << 16) | (((unsigned char *)&(b))[3] << 24))
@@ -49,6 +49,8 @@ extern "C" {
 
 #endif
 
+#define INVALID_PTR ((void *)-1)
+
 extern s8 *psxM;
 #define psxMs8(mem)            psxM[(mem) & 0x1fffff]
 #define psxMs16(mem)   (SWAP16(*(s16 *)&psxM[(mem) & 0x1fffff]))
@@ -112,7 +114,7 @@ extern s8 *psxH;
 extern u8 **psxMemWLUT;
 extern u8 **psxMemRLUT;
 
-#define PSXM(mem)              (psxMemRLUT[(mem) >> 16] == 0 ? NULL : (u8*)(psxMemRLUT[(mem) >> 16] + ((mem) & 0xffff)))
+#define PSXM(mem)              (psxMemRLUT[(mem) >> 16] == INVALID_PTR ? INVALID_PTR : (u8*)(psxMemRLUT[(mem) >> 16] + ((mem) & 0xffff)))
 #define PSXMs8(mem)            (*(s8 *)PSXM(mem))
 #define PSXMs16(mem)   (SWAP16(*(s16 *)PSXM(mem)))
 #define PSXMs32(mem)   (SWAP32(*(s32 *)PSXM(mem)))