X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=rmac.h;h=8e4e295e68874ae947734aea590e700604c35f36;hp=0f92d796b9a6b60a2a32970d8299f9079b4e35ee;hb=2ede3731285f3bc20f5493de593442e872db4d32;hpb=582df8950c285e1746d0c4a9e3ead6545c962dc8 diff --git a/rmac.h b/rmac.h index 0f92d79..8e4e295 100644 --- a/rmac.h +++ b/rmac.h @@ -135,7 +135,7 @@ // Byteswap crap #define BYTESWAP16(x) ((((x) & 0x00FF) << 8) | (((x) & 0xFF00) >> 8)) #define BYTESWAP32(x) ((((x) & 0x000000FF) << 24) | (((x) & 0x0000FF00) << 8) | (((x) & 0x00FF0000) >> 8) | (((x) & 0xFF000000) >> 24)) -#define BYTESWAP64(x) (BYTESWAP32(x>>32)|BYTESWAP32((x&0xffffffff)<<32)) +#define BYTESWAP64(x) ((BYTESWAP32(x >> 32) | (BYTESWAP32(x & 0xFFFFFFFF) << 32))) #define WORDSWAP32(x) ((((x) & 0x0000FFFF) << 16) | (((x) & 0xFFFF0000) >> 16)) // @@ -154,7 +154,6 @@ #define SPACE ' ' // ASCII space #define SLASHCHAR '/' #define SLASHSTRING "/" -#define TOKEN uint32_t // Assembler token #define FNSIZ 128 // Maximum size of a filename #define OK 0 // OK return #define DEBUG if (debug) // Debug conditional @@ -166,7 +165,7 @@ // Object code formats enum { -ALCYON, // Alcyon/DRI C object format +ALCYON, // Alcyon/DRI C object format MWC, // Mark Williams object format BSD, // BSD object format ELF, // ELF object format @@ -175,16 +174,21 @@ P56, // DSP 56001 object format XEX, // COM/EXE/XEX/whatever a8 object format }; +// Assembler token +#define TOKEN uint32_t + // Pointer type that can point to (almost) anything #define PTR union _ptr PTR { - uint8_t * cp; // Char - uint16_t * wp; // WORD - uint32_t * lp; // LONG - uint32_t lw; // LONG - SYM ** sy; // SYM - TOKEN * tk; // TOKEN + uint8_t * cp; // Char pointer + uint16_t * wp; // WORD pointer + uint32_t * lp; // LONG pointer + uint32_t * u32; // 32-bit pointer + uint64_t * u64; // 64-bit pointer + uint32_t lw; // LONG (for some reason) + SYM ** sy; // SYM pointer + TOKEN * tk; // TOKEN pointer }; // Symbol spaces @@ -215,11 +219,11 @@ PTR #define SIZW 0x0002 // .w #define SIZL 0x0004 // .l #define SIZN 0x0008 // no .(size) specifier -#define SIZD 0x0010 // .d (quad word or FPU double precision real) +#define SIZD 0x0010 // .d (FPU double precision real) #define SIZS 0x0020 // .s (FPU single precision real) #define SIZX 0x0040 // .x (FPU extended precision real) #define SIZP 0x0080 // .p (FPU pakced decimal real) -#define SIZQ 0x0100 // .q +#define SIZQ 0x0100 // .q (quad word) // RISC register bank definitions (used in extended symbol attributes also) #define BANK_N 0x0000 // No register bank specified @@ -262,6 +266,8 @@ enum OPT_INDIRECT_DISP = 3, OPT_LEA_ADDQ = 4, OPT_BASE_DISP = 5, + OPT_NULL_BRA = 6, + OPT_CLR_DX = 7, OPT_COUNT // Dummy, used to count number of optimisation switches };