]> Shamusworld >> Repos - rmac/blobdiff - sect.h
Initial commit for 68020/30/40/60/68881/68882/68851 support.
[rmac] / sect.h
diff --git a/sect.h b/sect.h
index d34dec23317413802052636e48fbfd9bbba93764..129b1cc08148228ea6ba3ec0c35f059a4dfc7404 100644 (file)
--- a/sect.h
+++ b/sect.h
 // token.L     expression list
 // (etc)
 // ENDEXPR.L   (end of expression)
-#define FUMASK       007               // Mask for fixup cases:
-#define FU_QUICK     000               // Fixup 3-bit quick instr field
-#define FU_BYTE      001               // Fixup byte
-#define FU_WORD      002               // Fixup word
-#define FU_WBYTE     003               // Fixup byte (at loc+1)
-#define FU_LONG      004               // Fixup long
-#define FU_BBRA      005               // Fixup byte branch
-#define FU_6BRA      007               // Fixup 6502-format branch offset
-#define FU_BYTEH     050        // Fixup 6502 high byte of immediate word
-#define FU_BYTEL     051        // Fixup 6502 low byte of immediate word
-#define FU_SEXT      010               // Ok to sign extend
-#define FU_PCREL     020               // Subtract PC first
-#define FU_EXPR      040               // Expression (not symbol) follows
+#define FUMASK       0x000F            // Mask for fixup cases:
+#define FU_QUICK     0x0000            // Fixup 3-bit quick instruction field
+#define FU_BYTE      0x0001            // Fixup byte
+#define FU_WORD      0x0002            // Fixup word
+#define FU_WBYTE     0x0003            // Fixup byte (at loc+1)
+#define FU_LONG      0x0004            // Fixup long
+#define FU_BBRA      0x0005            // Fixup byte branch
+#define FU_6BRA      0x0007            // Fixup 6502-format branch offset
+#define FU_BYTEH     0x0008            // Fixup 6502 high byte of immediate word
+#define FU_BYTEL     0x0009            // Fixup 6502 low byte of immediate word
+
+#define FU_SEXT      0x0010            // Ok to sign extend
+#define FU_PCREL     0x0020            // Subtract PC first
+#define FU_EXPR      0x0040            // Expression (not symbol) follows
 
 #define FU_GLOBAL    0x0080            // Mark global symbol
 
@@ -112,6 +113,30 @@ SECT {
        CHUNK * sfix;                           // Last fixup chunk
 };
 
+// 680x0 defines
+#define CPU_68000 1
+#define CPU_68020 2
+#define CPU_68030 4
+#define CPU_68040 8
+#define CPU_68060 16
+#define FPU_NONE  0
+#define FPU_68881 1
+#define FPU_68882 2
+#define FPU_68040 4
+
+// Helper macros to test for active CPU
+#define CHECK00 if (activecpu == CPU_68000) return error(unsupport)
+#define CHECK20 if (activecpu == CPU_68020) return error(unsupport)
+#define CHECK30 if (activecpu == CPU_68030) return error(unsupport)
+#define CHECK40 if (activecpu == CPU_68040) return error(unsupport)
+#define CHECK60 if (activecpu == CPU_68060) return error(unsupport)
+#define CHECKNO00 if (activecpu != CPU_68000) return error(unsupport)
+#define CHECKNO20 if (activecpu != CPU_68020) return error(unsupport)
+#define CHECKNO30 if (activecpu != CPU_68030) return error(unsupport)
+#define CHECKNO40 if (activecpu != CPU_68040) return error(unsupport)
+#define CHECKNO60 if (activecpu != CPU_68060) return error(unsupport)
+
+
 // Globals, external etc
 extern uint32_t sloc;
 extern uint16_t scattr;