diff options
author | David G. F | 2021-06-27 01:30:50 +0200 |
---|---|---|
committer | GitHub | 2021-06-27 01:30:50 +0200 |
commit | 48f1a71fb7b1d551295aec7ea44f5529c87bff93 (patch) | |
tree | cc50bd05fd8fd14444825c4929fb94ea6e98b1dc /common.h | |
parent | d5ff18d3cebc56c351d95a3eec1873cd7112e31f (diff) | |
parent | 8dbf5f6c17e3d217877119620e5bbfeba05abd7a (diff) | |
download | picogpsp-48f1a71fb7b1d551295aec7ea44f5529c87bff93.tar.gz picogpsp-48f1a71fb7b1d551295aec7ea44f5529c87bff93.tar.bz2 picogpsp-48f1a71fb7b1d551295aec7ea44f5529c87bff93.zip |
Merge pull request #137 from davidgfnet/master
Enable big-endian devices: gc/wii
Diffstat (limited to 'common.h')
-rw-r--r-- | common.h | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -124,6 +124,22 @@ typedef u32 fixed8_24; #define address32(base, offset) \ *((u32 *)((u8 *)base + (offset))) \ +#define eswap8(value) (value) +#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + #define eswap16(value) __builtin_bswap16(value) + #define eswap32(value) __builtin_bswap32(value) +#else + #define eswap16(value) (value) + #define eswap32(value) (value) +#endif + +#define readaddress8(base, offset) eswap8( address8( base, offset)) +#define readaddress16(base, offset) eswap16(address16(base, offset)) +#define readaddress32(base, offset) eswap32(address32(base, offset)) + +#define read_ioreg(regnum) (eswap16(io_registers[(regnum)])) +#define write_ioreg(regnum, val) io_registers[(regnum)] = eswap16(val) + #include <unistd.h> #include <time.h> #include <stdlib.h> |