00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "i386/gas.h"
00022 #include "nextstep.h"
00023
00024
00025
00026 #undef TARGET_SUBTARGET_DEFAULT
00027 #define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP)
00028
00029
00030
00031 #define TARGET_MEM_FUNCTIONS
00032
00033
00034
00035
00036
00037
00038
00039
00040 #undef VALUE_REGNO
00041 #define VALUE_REGNO(MODE) \
00042 ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode \
00043 ? FIRST_FLOAT_REG : 0)
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #undef ASM_OUTPUT_OPCODE
00054 #define ASM_OUTPUT_OPCODE(STREAM, PTR) \
00055 { \
00056 if ((PTR)[0] == 'r' \
00057 && (PTR)[1] == 'e' \
00058 && (PTR)[2] == 'p') \
00059 { \
00060 if ((PTR)[3] == 'z') \
00061 { \
00062 fprintf (STREAM, "repe"); \
00063 (PTR) += 4; \
00064 } \
00065 else if ((PTR)[3] == 'n' && (PTR)[4] == 'z') \
00066 { \
00067 fprintf (STREAM, "repne"); \
00068 (PTR) += 5; \
00069 } \
00070 } \
00071 }
00072
00073
00074
00075
00076
00077
00078
00079 #undef SHIFT_DOUBLE_OMITS_COUNT
00080 #define SHIFT_DOUBLE_OMITS_COUNT 0
00081
00082
00083 #define GAS_MNEMONICS 1
00084
00085
00086
00087 #undef CPP_PREDEFINES
00088 #define CPP_PREDEFINES "-DNeXT -Dunix -D__MACH__ -D__LITTLE_ENDIAN__ \
00089 -D__ARCHITECTURE__=\"i386\" -Asystem=unix -Asystem=mach"
00090
00091
00092
00093 #define OBJC_FORWARDING_STACK_OFFSET 8
00094 #define OBJC_FORWARDING_MIN_OFFSET 8
00095
00096
00097
00098 #undef LPREFIX
00099 #define LPREFIX "L"
00100
00101 #undef ASM_GENERATE_INTERNAL_LABEL
00102 #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \
00103 sprintf ((BUF), "*%s%ld", (PREFIX), (long)(NUMBER))
00104
00105 #undef ASM_OUTPUT_INTERNAL_LABEL
00106 #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \
00107 fprintf (FILE, "%s%d:\n", PREFIX, NUM)
00108
00109
00110
00111
00112 #undef ASM_APP_ON
00113 #define ASM_APP_ON "#APP\n"
00114
00115
00116
00117
00118 #undef ASM_APP_OFF
00119 #define ASM_APP_OFF "#NO_APP\n"
00120
00121 #undef ASM_OUTPUT_REG_PUSH
00122 #define ASM_OUTPUT_REG_PUSH(FILE,REGNO) \
00123 fprintf (FILE, "\tpushl %se%s\n", "%", reg_names[REGNO])
00124
00125 #undef ASM_OUTPUT_REG_POP
00126 #define ASM_OUTPUT_REG_POP(FILE,REGNO) \
00127 fprintf (FILE, "\tpopl %se%s\n", "%", reg_names[REGNO])
00128
00129
00130
00131
00132
00133 #undef FUNCTION_PROFILER
00134 #define FUNCTION_PROFILER(FILE, LABELNO) \
00135 { \
00136 if (flag_pic) \
00137 { \
00138 fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \
00139 LPREFIX, (LABELNO)); \
00140 fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
00141 } \
00142 else \
00143 { \
00144 fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \
00145 fprintf (FILE, "\tcall mcount\n"); \
00146 } \
00147 }
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159 #undef STRUCT_VALUE_INCOMING
00160 #undef STRUCT_VALUE
00161
00162
00163
00164 #undef STRUCT_VALUE_REGNUM
00165 #define STRUCT_VALUE_REGNUM 3
00166
00167
00168
00169
00170 #undef RETURN_POPS_ARGS
00171 #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
00172 ((FUNDECL) && TREE_CODE (FUNDECL) == IDENTIFIER_NODE \
00173 ? 0 \
00174 : (TARGET_RTD \
00175 && (TYPE_ARG_TYPES (FUNTYPE) == 0 \
00176 || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
00177 == void_type_node))) ? (SIZE) : 0)
00178
00179
00180
00181
00182
00183
00184 #undef ASM_OUTPUT_ALIGN
00185 #define ASM_OUTPUT_ALIGN(FILE,LOG) \
00186 if ((LOG)!=0) fprintf ((FILE), "\t.align %d,0x90\n", (LOG))