home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer) / NeXT_Developer-3.3.iso / NextDeveloper / Source / GNU / cc / config / sparc / next.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-18  |  4.0 KB  |  141 lines

  1. /*
  2.  * Target definitions for GNU compiler for sparc running NEXSTEP
  3.  * Any uncommented definitions are re-defines. Lookup corresponding
  4.  * comments in sparc.h
  5.  */
  6.  
  7. #include "sparc/sparc.h"
  8. #include "nextstep.h"
  9.  
  10. /* this macro is necessary to make objc method encodings work correctly
  11.    (aka compute the proper stack offset for regs) */
  12.  
  13. #define OBJC_FORWARDING_REG_OFFSET(ISREG, OFF, REGNO) \
  14.     do { OFF = (4 * ((REGNO) - 24)); \
  15.         ISREG = 0; } while (0)
  16.  
  17. #undef CPP_PREDEFINES
  18. #define CPP_PREDEFINES "-Dsparc -DNATURAL_ALIGNMENT -DNeXT -Dunix -D__MACH__ -D__BIG_ENDIAN__ -D__ARCHITECTURE__=\"sparc\""
  19.  
  20. #define TARGET_ARCHITECTURE \
  21.   { {"sparc", 0}}
  22.  
  23. #define DEFAULT_TARGET_ARCH "sparc"
  24.  
  25. /* putout data directives in 68k format */
  26.  
  27. #undef ASM_LONG
  28. #define ASM_LONG ".long"
  29. #undef ASM_SHORT
  30. #define ASM_SHORT ".short"
  31. #undef ASM_BYTE_OP
  32. #define ASM_BYTE_OP ".byte"
  33.  
  34. /* We don't want .proc generated */
  35.  
  36. #undef    ASM_DECLARE_RESULT
  37. #define    ASM_DECLARE_RESULT(FILE, RESULT)
  38.  
  39. /* customizations for .globl instead of .global */
  40.  
  41. #undef    ASM_GLOBALIZE_LABEL
  42. #define ASM_GLOBALIZE_LABEL(FILE,NAME)    \
  43.   do {       fputs ("\t.globl ", FILE); assemble_name (FILE, NAME); \
  44.        fputs ("\n", FILE);} while (0)
  45.  
  46. #undef ASM_OUTPUT_COMMON
  47. #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED)  \
  48. ( fputs ("\n\t.comm ", (FILE)),        \
  49.   assemble_name ((FILE), (NAME)),        \
  50.   fprintf ((FILE), ",%u\n", (ROUNDED)))
  51.  
  52. /* don't use .reserve */
  53. #undef ASM_OUTPUT_LOCAL
  54. #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED)  \
  55. ( fputs (".lcomm ", (FILE)),            \
  56.   assemble_name ((FILE), (NAME)),        \
  57.   fprintf ((FILE), ",%u\n", (ROUNDED)))
  58.  
  59. /* don't use .skip */
  60. #undef ASM_OUTPUT_SKIP
  61. #define ASM_OUTPUT_SKIP(FILE,SIZE)  \
  62.   fprintf (FILE, "\t.space %u\n", (SIZE))
  63.  
  64. /* assembler preprocessor directives */
  65. #undef ASM_APP_ON
  66. #define ASM_APP_ON "#APP\n"
  67.  
  68. #undef ASM_APP_OFF
  69. #define ASM_APP_OFF "#NO_APP\n"
  70.  
  71. #undef ASM_OUTPUT_DOUBLE
  72. #define ASM_OUTPUT_DOUBLE(FILE,VALUE)                    \
  73.   {                                    \
  74.     long t[2];                                                          \
  75.     REAL_VALUE_TO_TARGET_DOUBLE ((VALUE), t);                \
  76.     fprintf (FILE, "!\t.double %.12e\n\t%s\t0x%lx\n\t%s\t0x%lx\n",    \
  77.          (VALUE), ASM_LONG, t[0], ASM_LONG, t[1]);            \
  78.   }
  79.  
  80. #undef ASM_OUTPUT_FLOAT
  81. #define ASM_OUTPUT_FLOAT(FILE,VALUE)                    \
  82.   {                                    \
  83.     long t;                                \
  84.     REAL_VALUE_TO_TARGET_SINGLE ((VALUE), t);                \
  85.     fprintf (FILE, "!\t.single %.12e\n\t%s\t0x%lx\n", (VALUE), ASM_LONG, t);\
  86.   }
  87.  
  88. #undef ASM_OUTPUT_SOURCE_LINE
  89. #define ASM_OUTPUT_SOURCE_LINE(file, line)        \
  90.   { static int sym_lineno = 1;                \
  91.     fprintf (file, "\t.stabn 68,0,%d,LM%d\nLM%d:\n",    \
  92.          line, sym_lineno, sym_lineno);        \
  93.     sym_lineno += 1; }
  94.  
  95. #undef ASM_OUTPUT_INT
  96. #define ASM_OUTPUT_INT(FILE,VALUE)              \
  97. ( fprintf (FILE, "\t%s ", ASM_LONG),        \
  98.   output_addr_const (FILE, (VALUE)),        \
  99.   fprintf (FILE, "\n"))
  100.  
  101. #undef ASM_OUTPUT_SHORT
  102. #define ASM_OUTPUT_SHORT(FILE,VALUE)            \
  103. ( fprintf (FILE, "\t%s ", ASM_SHORT),        \
  104.   output_addr_const (FILE, (VALUE)),        \
  105.   fprintf (FILE, "\n"))
  106.  
  107. #undef ASM_OUTPUT_CHAR
  108. #define ASM_OUTPUT_CHAR(FILE,VALUE)             \
  109. ( fprintf (FILE, "\t%s ", ASM_BYTE_OP),      \
  110.   output_addr_const (FILE, (VALUE)),        \
  111.   fprintf (FILE, "\n"))
  112.  
  113. #undef ASM_OUTPUT_BYTE
  114. #define ASM_OUTPUT_BYTE(FILE,VALUE)  \
  115.   fprintf (FILE, "\t%s 0x%x\n", ASM_BYTE_OP, (VALUE))
  116.  
  117. #undef ASM_OUTPUT_ADDR_VEC_ELT
  118. #define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
  119. do {                                    \
  120.   char label[30];                            \
  121.   ASM_GENERATE_INTERNAL_LABEL (label, "L", VALUE);            \
  122.   fprintf (FILE, "\t%s ", ASM_LONG);                    \
  123.   assemble_name (FILE, label);                        \
  124.   fprintf (FILE, "\n");                            \
  125. } while (0)
  126.  
  127. #undef ASM_OUTPUT_ADDR_DIFF_ELT
  128. #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, VALUE, REL)            \
  129. do {                                    \
  130.   char label[30];                            \
  131.   ASM_GENERATE_INTERNAL_LABEL (label, "L", VALUE);            \
  132.   fprintf (FILE, "\t%s ", ASM_LONG);                    \
  133.   assemble_name (FILE, label);                        \
  134.   fprintf (FILE, "-1b\n");                        \
  135. } while (0)
  136.  
  137.  
  138. /* Make SPARC V8 the default architecture */
  139. #undef TARGET_DEFAULT
  140. #define TARGET_DEFAULT 67    // turn on Sparc V8 flag, hard-fp and fpu
  141.