home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / NeXT / GnuSource / cplusplus-8 / config / tm-next68.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-10-24  |  3.4 KB  |  98 lines

  1. /* tm-next68.h:  definitions for NeXT.
  2.  
  3. This file is part of GNU CC.
  4.  
  5. GNU CC is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2, or (at your option)
  8. any later version.
  9.  
  10. GNU CC is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with GNU CC; see the file COPYING.  If not, write to
  17. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  18.  
  19. #include "tm-m68k.h"
  20. #include "tm-next.h"
  21.  
  22. /* See tm-m68k.h.  0407 means 68040 (or 68030 or 68020, with 68881/2).  */
  23.  
  24. #define TARGET_DEFAULT 0407
  25.  
  26. #undef STACK_BOUNDARY
  27. /* Boundary (in *bits*) on which stack pointer should be aligned.  */
  28. #define STACK_BOUNDARY 32
  29.  
  30. /* Names to predefine in the preprocessor for this target machine.  */
  31.  
  32. #define CPP_PREDEFINES "-Dmc68000 -Dm68k -DNeXT -Dunix -D__MACH__"
  33.  
  34. /* Every structure or union's size must be a multiple of 2 bytes.
  35.    (Why isn't this in tm-m68k.h?)  */
  36.  
  37. #define STRUCTURE_SIZE_BOUNDARY 16
  38.  
  39. /* This is how to output an assembler line defining a `double' constant.  */
  40.  
  41. #undef ASM_OUTPUT_DOUBLE
  42. #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                    \
  43.   (isinf ((VALUE))                            \
  44.    ? fprintf (FILE, "\t.double 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
  45.    : fprintf (FILE, "\t.double 0r%.20e\n", (VALUE)))
  46.  
  47. /* This is how to output an assembler line defining a `float' constant.  */
  48.  
  49. #undef ASM_OUTPUT_FLOAT
  50. #define ASM_OUTPUT_FLOAT(FILE,VALUE)                    \
  51.   (isinf ((VALUE))                            \
  52.    ? fprintf (FILE, "\t.single 0r%s99e999\n", ((VALUE) > 0 ? "" : "-")) \
  53.    : fprintf (FILE, "\t.single 0r%.20e\n", (VALUE)))
  54.  
  55. #undef ASM_OUTPUT_FLOAT_OPERAND
  56. #define ASM_OUTPUT_FLOAT_OPERAND(FILE,VALUE)                \
  57.   (isinf ((VALUE))                            \
  58.    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
  59.    : fprintf (FILE, "#0r%.9g", (VALUE)))
  60.  
  61. #undef ASM_OUTPUT_DOUBLE_OPERAND
  62. #define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE)                \
  63.   (isinf ((VALUE))                            \
  64.    ? fprintf (FILE, "#0r%s99e999", ((VALUE) > 0 ? "" : "-")) \
  65.    : fprintf (FILE, "#0r%.20g", (VALUE)))
  66.  
  67. /* We do not define JUMP_TABLES_IN_TEXT_SECTION, since we wish to keep
  68.    the text section pure.  There is no point in addressing the jump
  69.    tables using pc relative addressing, since they are not in the text
  70.    section, so we undefine CASE_VECTOR_PC_RELATIVE.  This also
  71.    causes the compiler to use absolute addresses in the jump table,
  72.    so we redefine CASE_VECTOR_MODE to be SImode. */
  73.  
  74. #undef CASE_VECTOR_MODE
  75. #define CASE_VECTOR_MODE SImode
  76.  
  77. #undef CASE_VECTOR_PC_RELATIVE
  78.  
  79. /* Make sure jump tables have the same alignment as other pointers.  */
  80.  
  81. #define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN)    \
  82.   do { const_section ();                    \
  83.        ASM_OUTPUT_ALIGN (FILE, 1);                \
  84.        ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM); } while (0)
  85.  
  86. /* Output at the end of a jump table.  */
  87.  
  88. #define ASM_OUTPUT_CASE_END(FILE,NUM,INSN)    \
  89.   text_section ();
  90.  
  91. /* Don't treat addresses involving labels differently from symbol names.
  92.    Previsouly, references to labels generated pc-relative addressing modes
  93.    while references to symbol names generated absolute addressing modes.  */
  94.  
  95. #undef GO_IF_INDEXABLE_BASE(X, ADDR)
  96. #define GO_IF_INDEXABLE_BASE(X, ADDR)    \
  97. { if (GET_CODE (X) == REG && REG_OK_FOR_BASE_P (X)) goto ADDR; }
  98.