|
|
1.1 ! root 1: /* Definitions for Sequent Intel 386. ! 2: Copyright (C) 1988 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, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 19: ! 20: #include "i386/i386.h" ! 21: ! 22: /* Use the BSD assembler syntax. */ ! 23: ! 24: #include "i386/bsd.h" ! 25: ! 26: /* By default, don't use IEEE compatible arithmetic comparisons ! 27: because the assembler can't handle the fucom insn. ! 28: Return float values in the 387. ! 29: (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387) */ ! 30: ! 31: #undef TARGET_DEFAULT ! 32: #define TARGET_DEFAULT 0201 ! 33: ! 34: /* Specify predefined symbols in preprocessor. */ ! 35: ! 36: #define CPP_PREDEFINES "-Dunix -Di386 -Dsequent -Asystem(unix) -Acpu(i386) -Amachine(i386)" ! 37: ! 38: /* Pass -Z and -ZO options to the linker. */ ! 39: ! 40: #define LINK_SPEC "%{Z*}" ! 41: ! 42: #if 0 /* Dynix 3.1 is said to accept -L. */ ! 43: /* Dynix V3.0.12 doesn't accept -L at all. */ ! 44: ! 45: #define LINK_LIBGCC_SPECIAL ! 46: #endif ! 47: ! 48: /* Link with libg.a when debugging, for dbx's sake. */ ! 49: ! 50: #define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} " ! 51: ! 52: /* We don't want to output SDB debugging information. */ ! 53: ! 54: #undef SDB_DEBUGGING_INFO ! 55: ! 56: /* We want to output DBX debugging information. */ ! 57: ! 58: #define DBX_DEBUGGING_INFO ! 59: ! 60: /* Sequent Symmetry has size_t defined as int in /usr/include/sys/types.h */ ! 61: #define SIZE_TYPE "int" ! 62: ! 63: /* gcc order is ax, dx, cx, bx, si, di, bp, sp, st, st. ! 64: * dbx order is ax, dx, cx, st(0), st(1), bx, si, di, st(2), st(3), ! 65: * st(4), st(5), st(6), st(7), sp, bp */ ! 66: ! 67: /* ??? The right thing would be to change the ordering of the ! 68: registers to correspond to the conventions of this system, ! 69: and get rid of DBX_REGISTER_NUMBER. */ ! 70: ! 71: #undef DBX_REGISTER_NUMBER ! 72: #define DBX_REGISTER_NUMBER(n) \ ! 73: ((n) < 3 ? (n) : (n) < 6 ? (n) + 2 \ ! 74: : (n) == 6 ? 15 : (n) == 7 ? 14 : 3) ! 75: ! 76: /* [email protected] says these two definitions ! 77: fix trouble in dbx. */ ! 78: #undef DBX_OUTPUT_LBRAC ! 79: #define DBX_OUTPUT_LBRAC(file,name) \ ! 80: fprintf (asmfile, "%s %d,0,%d,", ASM_STABN_OP, N_LBRAC, depth); \ ! 81: assemble_name (asmfile, buf); \ ! 82: fprintf (asmfile, "\n"); ! 83: ! 84: #undef DBX_OUTPUT_RBRAC ! 85: #define DBX_OUTPUT_RBRAC(file,name) \ ! 86: fprintf (asmfile, "%s %d,0,%d,", ASM_STABN_OP, N_RBRAC, depth); \ ! 87: assemble_name (asmfile, buf); \ ! 88: fprintf (asmfile, "\n"); ! 89: ! 90: /* Prevent anything from being allocated in the register pair cx/bx, ! 91: since that would confuse GDB. */ ! 92: ! 93: #undef HARD_REGNO_MODE_OK ! 94: #define HARD_REGNO_MODE_OK(REGNO, MODE) \ ! 95: (((REGNO) < 2 ? 1 \ ! 96: : (REGNO) < 4 ? 1 \ ! 97: : FP_REGNO_P (REGNO) ? (GET_MODE_CLASS (MODE) == MODE_FLOAT \ ! 98: || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT) \ ! 99: : (MODE) != QImode) \ ! 100: && ! (REGNO == 2 && GET_MODE_UNIT_SIZE (MODE) > 4)) ! 101: ! 102: /* Output assembler code to FILE to increment profiler label # LABELNO ! 103: for profiling a function entry. */ ! 104: ! 105: #undef FUNCTION_PROFILER ! 106: #define FUNCTION_PROFILER(FILE, LABELNO) \ ! 107: fprintf (FILE, "\tmovl $.LP%d,%%eax\n\tcall mcount\n", (LABELNO)); ! 108: ! 109: /* Assembler pseudo-op for shared data segment. */ ! 110: #define SHARED_SECTION_ASM_OP ".shdata" ! 111: ! 112: /* A C statement or statements which output an assembler instruction ! 113: opcode to the stdio stream STREAM. The macro-operand PTR is a ! 114: variable of type `char *' which points to the opcode name in its ! 115: "internal" form--the form that is written in the machine description. ! 116: ! 117: The Sequent assembler (identified as "Balance 8000 Assembler ! 118: 07/17/85 3.90" by "as -v") does not understand the `movs[bwl]' string ! 119: move mnemonics - it uses `smov[bwl]' instead. Change "movs" into ! 120: "smov", carefully avoiding the sign-extend opcodes. */ ! 121: ! 122: #define ASM_OUTPUT_OPCODE(STREAM, PTR) \ ! 123: { \ ! 124: if ((PTR)[0] == 'm' \ ! 125: && (PTR)[1] == 'o' \ ! 126: && (PTR)[2] == 'v' \ ! 127: && (PTR)[3] == 's' \ ! 128: && ((PTR)[4] == 'b' || (PTR)[4] == 'w' || (PTR)[4] == 'l') \ ! 129: && ((PTR)[5] == ' ' || (PTR)[5] == '\t'|| (PTR)[5] == '\0')) \ ! 130: { \ ! 131: fprintf (STREAM, "smov"); \ ! 132: (PTR) += 4; \ ! 133: } \ ! 134: } ! 135: ! 136: /* 10-Aug-92 pes Local labels are prefixed with ".L" */ ! 137: #undef LPREFIX ! 138: #define LPREFIX ".L" ! 139: ! 140: #undef ASM_GENERATE_INTERNAL_LABEL ! 141: #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER)\ ! 142: sprintf ((BUF), "*.%s%d", (PREFIX), (NUMBER)) ! 143: ! 144: #undef ASM_OUTPUT_INTERNAL_LABEL ! 145: #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)\ ! 146: fprintf (FILE, ".%s%d:\n", PREFIX, NUM)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.