|
|
1.1 ! root 1: /* ! 2: * dpx2.h - Bull DPX/2 200 and 300 systems (m68k, SysVr3) ! 3: * ! 4: * $Id: dpx2.h,v 1.3 1992/05/21 08:04:22 rms Exp $ ! 5: */ ! 6: ! 7: #include "m68k.h" ! 8: #undef SELECT_RTX_SECTION ! 9: #include "svr3.h" ! 10: ! 11: /* See m68k.h. 7 means 68020 with 68881. ! 12: * We really have 68030, but this will get us going. ! 13: */ ! 14: #ifndef TARGET_DEFAULT ! 15: #define TARGET_DEFAULT 7 ! 16: #endif ! 17: ! 18: #define OBJECT_FORMAT_COFF ! 19: #define NO_SYS_SIGLIST ! 20: ! 21: #ifdef CPP_PREDEFINES ! 22: #undef CPP_PREDEFINES ! 23: #endif ! 24: /* ! 25: * define all the things the compiler should ! 26: */ ! 27: #ifdef ncl_mr ! 28: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020 -Dncl_mr=1" ! 29: #else ! 30: # ifdef ncl_el ! 31: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020 -Dncl_el" ! 32: # else ! 33: # define CPP_PREDEFINES "-Dunix -Dbull -DDPX2 -DSVR3 -Dmc68000 -Dmc68020" ! 34: # endif ! 35: #endif ! 36: ! 37: #undef CPP_SPEC ! 38: /* ! 39: * use -ansi to imply POSIX and XOPEN and BULL source ! 40: * no -ansi implies _SYSV ! 41: */ ! 42: # define CPP_SPEC "%{ansi:-D_POSIX_SOURCE -D_XOPEN_SOURCE -D_BULL_SOURCE}\ ! 43: %{!ansi:-D_SYSV}" ! 44: ! 45: #undef ASM_LONG ! 46: #define ASM_LONG "\t.long" ! 47: ! 48: #define HAVE_ATEXIT ! 49: #undef DO_GLOBAL_CTORS_BODY /* don't use svr3.h version */ ! 50: #undef DO_GLOBAL_DTORS_BODY ! 51: ! 52: #if 0 /* def DEBUG */ ! 53: /* ! 54: * find out where cc1 aborts ! 55: */ ! 56: #define abort() do { fprintf(stderr, "%s: aborting at line %d\n", \ ! 57: __FILE__, __LINE__); \ ! 58: kill(getpid(), 6); } while (0) ! 59: #endif ! 60: ! 61: /* ! 62: * svr3.h says to use BSS_SECTION_FUNCTION ! 63: * but no one appears to, and there is ! 64: * no definition for m68k. ! 65: */ ! 66: #ifndef BSS_SECTION_FUNCTION ! 67: # undef EXTRA_SECTION_FUNCTIONS ! 68: # define EXTRA_SECTION_FUNCTIONS \ ! 69: CONST_SECTION_FUNCTION \ ! 70: INIT_SECTION_FUNCTION \ ! 71: FINI_SECTION_FUNCTION ! 72: #endif ! 73: ! 74: #ifndef USE_GAS ! 75: /* ! 76: * handle the native assembler. ! 77: * this does NOT yet work, there is much left to do. ! 78: * use GAS for now... ! 79: */ ! 80: #undef ASM_OUTPUT_SOURCE_FILENAME ! 81: #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NA) \ ! 82: do { fprintf ((FILE), "\t.file\t'%s'\n", (NA)); } while (0) ! 83: ! 84: /* ! 85: * we don't seem to support any of: ! 86: * .globl ! 87: * .even ! 88: * .align ! 89: * .ascii ! 90: */ ! 91: #undef ASM_GLOBALIZE_LABEL ! 92: #define ASM_GLOBALIZE_LABEL(FILE,NAME) while (0) ! 93: #undef ASM_OUTPUT_ALIGN ! 94: #define ASM_OUTPUT_ALIGN(asm_out_file, align) while (0) ! 95: #define STRING_LIMIT (0) ! 96: #undef ASM_APP_ON ! 97: #define ASM_APP_ON "" ! 98: #undef ASM_APP_OFF ! 99: #define ASM_APP_OFF "" ! 100: /* ! 101: * dc.b 'hello, world!' ! 102: * dc.b 10,0 ! 103: * is how we have to output "hello, world!\n" ! 104: */ ! 105: #undef ASM_OUTPUT_ASCII ! 106: #define ASM_OUTPUT_ASCII(asm_out_file, p, thissize) \ ! 107: do { register int i, c, f=0; \ ! 108: for (i = 0; i < thissize; i++) { \ ! 109: c = p[i]; \ ! 110: if (c == '\'' || c < ' ' || c > 127) { \ ! 111: switch(f) { \ ! 112: case 0: /* need to output dc.b etc */ \ ! 113: fprintf(asm_out_file, "\tdc.b %d", c); \ ! 114: f=1; \ ! 115: break; \ ! 116: case 1: \ ! 117: fprintf(asm_out_file, ",%d", c); \ ! 118: break; \ ! 119: default: \ ! 120: /* close a string */ \ ! 121: fprintf(asm_out_file, "'\n\tdc.b %d", c); \ ! 122: f=1; \ ! 123: break; \ ! 124: } \ ! 125: } else { \ ! 126: switch(f) { \ ! 127: case 0: \ ! 128: fprintf(asm_out_file, "\tdc.b '%c", c); \ ! 129: f=2; \ ! 130: break; \ ! 131: case 2: \ ! 132: fprintf(asm_out_file, "%c", c); \ ! 133: break; \ ! 134: default: \ ! 135: fprintf(asm_out_file, "\n\tdc.b '%c", c); \ ! 136: f=2; \ ! 137: break; \ ! 138: } \ ! 139: } \ ! 140: } \ ! 141: if (f==2) \ ! 142: putc('\'', asm_out_file); \ ! 143: putc('\n', asm_out_file); } while (0) ! 144: ! 145: /* This is how to output an insn to push a register on the stack. ! 146: It need not be very fast code. */ ! 147: ! 148: #undef ASM_OUTPUT_REG_PUSH ! 149: #define ASM_OUTPUT_REG_PUSH(FILE,REGNO) \ ! 150: fprintf (FILE, "\tmove.l %s,-(sp)\n", reg_names[REGNO]) ! 151: ! 152: /* This is how to output an insn to pop a register from the stack. ! 153: It need not be very fast code. */ ! 154: ! 155: #undef ASM_OUTPUT_REG_POP ! 156: #define ASM_OUTPUT_REG_POP(FILE,REGNO) \ ! 157: fprintf (FILE, "\tmove.l (sp)+,%s\n", reg_names[REGNO]) ! 158: ! 159: #endif /* ! use gas */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.