home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Source / GNU / gcc / config / m68k / apollo68.h < prev    next >
C/C++ Source or Header  |  1995-06-15  |  7KB  |  208 lines

  1. /* Definitions of target machine for GNU compiler.  Apollo 680X0 version.
  2.    Copyright (C) 1989,1992 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU CC.
  5.  
  6. GNU CC is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU CC is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU CC; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21. #include "m68k/m68k.h"
  22.  
  23. /* This symbol may be tested in other files for special Apollo handling */
  24.  
  25. #define TM_APOLLO
  26.  
  27. /* See m68k.h.  7 means 68020 with 68881.  */
  28.  
  29. #ifndef TARGET_DEFAULT
  30. #define TARGET_DEFAULT 7
  31. #endif
  32.  
  33. /* Target switches for the Apollo is the same as in m68k.h, except
  34.    there is no Sun FPA. */
  35.  
  36. #undef TARGET_SWITCHES
  37. #define TARGET_SWITCHES  \
  38.   { { "68020", 5},                \
  39.     { "c68020", 5},                \
  40.     { "68881", 2},                \
  41.     { "bitfield", 4},                \
  42.     { "68000", -5},                \
  43.     { "c68000", -5},                \
  44.     { "soft-float", -0102},            \
  45.     { "nobitfield", -4},            \
  46.     { "rtd", 8},                \
  47.     { "nortd", -8},                \
  48.     { "short", 040},                \
  49.     { "noshort", -040},                \
  50.     { "", TARGET_DEFAULT}}
  51.  
  52. /* Define __HAVE_68881__ in preprocessor,
  53.    according to the -m flags.
  54.    This will control the use of inline 68881 insns in certain macros.
  55.    Also inform the program which CPU this is for.  */
  56.  
  57. #if TARGET_DEFAULT & 02
  58.  
  59. /* -m68881 is the default */
  60. #define CPP_SPEC \
  61. "%{!msoft-float:%{mfpa:-D__HAVE_FPA__ }%{!mfpa:-D__HAVE_68881__ }}\
  62. %{!ansi:%{m68000:-Dmc68010 }%{mc68000:-Dmc68010 }%{!mc68000:%{!m68000:-Dmc68020 }}\
  63. %{!ansi:-D_APOLLO_SOURCE}}"
  64.  
  65. #else
  66.  
  67. /* -msoft-float is the default */
  68. #define CPP_SPEC \
  69. "%{m68881:-D__HAVE_68881__ }%{mfpa:-D__HAVE_FPA__ }\
  70. %{!ansi:%{m68000:-Dmc68010 }%{mc68000:-Dmc68010 }%{!mc68000:%{!m68000:-Dmc68020 }}\
  71. %{!ansi:-D_APOLLO_SOURCE}}"
  72.  
  73. #endif
  74.  
  75. /* Names to predefine in the preprocessor for this target machine.  */
  76. /* These are the ones defined by Apollo, plus mc68000 for uniformity with
  77.    GCC on other 68000 systems.  */
  78.  
  79. #define CPP_PREDEFINES "-Dapollo -Daegis -Dunix -Asystem(unix)  -Acpu(m68k) -Amachine(m68k)"
  80.  
  81. /* cpp has to support a #sccs directive for the /usr/include files */
  82.  
  83. #define SCCS_DIRECTIVE
  84.  
  85. /* Allow #ident but output nothing for it.  */
  86.  
  87. #define IDENT_DIRECTIVE
  88. #define ASM_OUTPUT_IDENT(FILE, NAME)
  89.  
  90. /* Allow dollarsigns in identifiers */
  91.  
  92. #define DOLLARS_IN_IDENTIFIERS 2
  93.  
  94. /* -m68000 requires special flags to the assembler.  */
  95.  
  96. #define ASM_SPEC \
  97.  "%{m68000:-mc68010}%{mc68000:-mc68010}%{!mc68000:%{!m68000:-mc68020}}"
  98.  
  99. /* STARTFILE_SPEC
  100.    Note that includes knowledge of the default specs for gcc, ie. no
  101.    args translates to the same effect as -m68881 */
  102.  
  103. #if TARGET_DEFAULT & 2
  104. /* -m68881 is the default */
  105. #define STARTFILE_SPEC                    \
  106.   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}"
  107. #else
  108. /* -msoft-float is the default */
  109. #define STARTFILE_SPEC                    \
  110.   "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}"
  111. #endif
  112.  
  113. /* Specify library to handle `-a' basic block profiling.  */
  114.  
  115. #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} \
  116. %{a:/usr/lib/bb_link.o} "
  117.  
  118. /* Debugging is not supported yet */
  119.  
  120. #undef DBX_DEBUGGING_INFO
  121. #undef SDB_DEBUGGING_INFO
  122.  
  123. /* We have atexit(2).  So C++ can use it for global destructors.  */
  124.  
  125. #if 0 /* troy@cbme.unsw.edu.au says people are still using sr10.2
  126.      and it does not support atexit.  */
  127. #define HAVE_ATEXIT
  128. #endif
  129.  
  130. /* Every structure or union's size must be a multiple of 2 bytes.  */
  131.  
  132. #define STRUCTURE_SIZE_BOUNDARY 16
  133.  
  134. /* Boundary (in *bits*) on which stack pointer should be aligned.  */
  135. #undef STACK_BOUNDARY
  136. #define STACK_BOUNDARY 32
  137.  
  138. /* Functions which return large structures get the address
  139.    to place the wanted value from a hidden parameter.  */
  140.  
  141. #undef  PCC_STATIC_STRUCT_RETURN
  142. #undef  STRUCT_VALUE_REGNUM
  143. #define STRUCT_VALUE 0
  144. #define STRUCT_VALUE_INCOMING 0
  145.  
  146. /* Specify how to pad function arguments.
  147.    Arguments are not padded at all; the stack is kept aligned on long
  148.    boundaries. */
  149.  
  150. #define FUNCTION_ARG_PADDING(mode, size) none
  151.  
  152. /* The definition of this macro imposes a limit on the size of
  153.    an aggregate object which can be treated as if it were a scalar
  154.    object.  */
  155.  
  156. #define MAX_FIXED_MODE_SIZE    BITS_PER_WORD
  157.  
  158. /* The definition of this macro implies that there are cases where
  159.    a scalar value cannot be returned in registers.
  160.    For Apollo, anything larger than one integer register is returned
  161.    using the structure-value mechanism, i.e. objects of DFmode are
  162.    returned that way. */
  163.  
  164. #define RETURN_IN_MEMORY(type) \
  165.   (TYPE_MODE (type) == BLKmode \
  166.    || GET_MODE_SIZE (TYPE_MODE (type)) > UNITS_PER_WORD)
  167.  
  168. /* In order to link with Apollo libraries, we can't prefix external
  169.    symbols with an underscore.  */
  170.  
  171. #undef  USER_LABEL_PREFIX
  172.  
  173. /* Use a prefix for local labels, just to be on the save side.  */
  174.  
  175. #undef LOCAL_LABEL_PREFIX
  176. #define LOCAL_LABEL_PREFIX "."
  177.  
  178. /* Use a register prefix to avoid clashes with external symbols (classic
  179.    example: `extern char PC;' in termcap).  */
  180.  
  181. #undef REGISTER_PREFIX
  182. #define REGISTER_PREFIX "%"
  183.  
  184. /* config/m68k.md has an explicit reference to the program counter,
  185.    prefix this by the register prefix.  */
  186.  
  187. #define ASM_RETURN_CASE_JUMP    return "jmp %%pc@(2,%0:w)"
  188.  
  189.  
  190. /* Here are the new register names.  */
  191.  
  192. #undef REGISTER_NAMES
  193. #ifndef SUPPORT_SUN_FPA
  194. #define REGISTER_NAMES \
  195. {"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",    \
  196.  "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp",    \
  197.  "%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7" }
  198. #else /* SUPPORTED_SUN_FPA */
  199. #define REGISTER_NAMES \
  200. {"%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",    \
  201.  "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%sp",    \
  202.  "%fp0", "%fp1", "%fp2", "%fp3", "%fp4", "%fp5", "%fp6", "%fp7", \
  203.  "%fpa0", "%fpa1", "%fpa2", "%fpa3", "%fpa4", "%fpa5", "%fpa6", "%fpa7", \
  204.  "%fpa8", "%fpa9", "%fpa10", "%fpa11", "%fpa12", "%fpa13", "%fpa14", "%fpa15", \
  205.  "%fpa16", "%fpa17", "%fpa18", "%fpa19", "%fpa20", "%fpa21", "%fpa22", "%fpa23", \
  206.  "%fpa24", "%fpa25", "%fpa26", "%fpa27", "%fpa28", "%fpa29", "%fpa30", "%fpa31" }
  207. #endif /* defined SUPPORT_SUN_FPA */
  208.