uhh swizzle io register addresses too?? is this anything

This commit is contained in:
lif 2023-12-25 00:40:00 -08:00
parent 35711d50e0
commit 6f692d7296
1 changed files with 6 additions and 4 deletions

View File

@ -141,11 +141,13 @@ typedef u32 fixed8_24;
// #define eswap32(value) __builtin_bswap32(value) // #define eswap32(value) __builtin_bswap32(value)
#define eswap16(value) (value) #define eswap16(value) (value)
#define eswap32(value) (value) #define eswap32(value) (value)
#define swizzle_regnum(idx) ((idx) ^ 1)
#define swizzle_h(ofs) ((ofs) ^ 2) #define swizzle_h(ofs) ((ofs) ^ 2)
#define swizzle_b(ofs) ((ofs) ^ 3) #define swizzle_b(ofs) ((ofs) ^ 3)
#else #else
#define eswap16(value) (value) #define eswap16(value) (value)
#define eswap32(value) (value) #define eswap32(value) (value)
#define swizzle_regnum(idx) (idx)
#define swizzle_h(ofs) (ofs) #define swizzle_h(ofs) (ofs)
#define swizzle_b(ofs) (ofs) #define swizzle_b(ofs) (ofs)
#endif #endif
@ -154,12 +156,12 @@ typedef u32 fixed8_24;
#define readaddress16(base, offset) eswap16(address16(base, swizzle_h(offset))) #define readaddress16(base, offset) eswap16(address16(base, swizzle_h(offset)))
#define readaddress32(base, offset) eswap32(address32(base, offset)) #define readaddress32(base, offset) eswap32(address32(base, offset))
#define read_ioreg(regnum) (eswap16(io_registers[(regnum)])) #define read_ioreg(regnum) (eswap16(io_registers[swizzle_regnum(regnum)]))
#define write_ioreg(regnum, val) io_registers[(regnum)] = eswap16(val) #define write_ioreg(regnum, val) io_registers[swizzle_regnum(regnum)] = eswap16(val)
#define read_ioreg32(regnum) (read_ioreg(regnum) | (read_ioreg((regnum)+1) << 16)) #define read_ioreg32(regnum) (read_ioreg(regnum) | (read_ioreg((regnum)+1) << 16))
#define read_dmareg(regnum, dmachan) (eswap16(io_registers[(regnum) + (dmachan) * 6])) #define read_dmareg(regnum, dmachan) (eswap16(io_registers[swizzle_regnum((regnum) + (dmachan) * 6)]))
#define write_dmareg(regnum, dmachan, val) io_registers[(regnum) + (dmachan) * 6] = eswap16(val) #define write_dmareg(regnum, dmachan, val) io_registers[swizzle_regnum((regnum) + (dmachan) * 6)] = eswap16(val)
#include <unistd.h> #include <unistd.h>
#include <time.h> #include <time.h>