home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 7 / FreshFishVol7.bin / bbs / gnu / gcc-2.3.3-src.lha / GNU / src / amiga / gcc-2.3.3 / config / dpx2.h < prev    next >
C/C++ Source or Header  |  1994-02-06  |  4KB  |  163 lines

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