|
|
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.h" ! 21: ! 22: /* Use the BSD assembler syntax. */ ! 23: ! 24: #include "bsd386.h" ! 25: ! 26: /* By default, target has a 80387. */ ! 27: ! 28: #define TARGET_DEFAULT 1 ! 29: ! 30: /* Specify predefined symbols in preprocessor. */ ! 31: ! 32: #define CPP_PREDEFINES "-Dunix -Di386 -Dsequent" ! 33: ! 34: /* Pass -Z and -ZO options to the linker. */ ! 35: ! 36: #define LINK_SPEC "%{Z*}" ! 37: ! 38: /* Link with libg.a when debugging, for dbx's sake. */ ! 39: ! 40: #define LIB_SPEC "%{g:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} " ! 41: ! 42: /* We don't want to output SDB debugging information. */ ! 43: ! 44: #undef SDB_DEBUGGING_INFO ! 45: ! 46: /* We want to output DBX debugging information. */ ! 47: ! 48: #define DBX_DEBUGGING_INFO ! 49: ! 50: /* gcc order is ax, dx, cx, bx, si, di, bp, sp, st, st. ! 51: * dbx order is ax, dx, cx, st(0), st(1), bx, si, di, st(2), st(3), ! 52: * st(4), st(5), st(6), st(7), sp, bp */ ! 53: ! 54: /* ??? The right thing would be to change the ordering of the ! 55: registers to correspond to the conventions of this system, ! 56: and get rid of DBX_REGISTER_NUMBER. */ ! 57: ! 58: #undef DBX_REGISTER_NUMBER ! 59: #define DBX_REGISTER_NUMBER(n) \ ! 60: ((n) < 3 ? (n) : (n) < 6 ? (n) + 2 \ ! 61: : (n) == 6 ? 15 : (n) == 7 ? 14 : 3) ! 62: ! 63: /* Prevent anything from being allocated in the register pair cx/bx, ! 64: since that would confuse GDB. */ ! 65: ! 66: #undef HARD_REGNO_MODE_OK ! 67: #define HARD_REGNO_MODE_OK(REGNO, MODE) \ ! 68: (((REGNO) < 2 ? 1 \ ! 69: : (REGNO) < 4 ? 1 \ ! 70: : (REGNO) >= 8 ? (GET_MODE_CLASS (MODE) == MODE_FLOAT \ ! 71: || GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT) \ ! 72: : (MODE) != QImode) \ ! 73: && ! (REGNO == 2 && GET_MODE_UNIT_SIZE (MODE) > 4)) ! 74: ! 75: /* Floating-point return values come in the FP register. */ ! 76: ! 77: #define VALUE_REGNO(MODE) \ ! 78: (((MODE)==SFmode || (MODE)==DFmode) ? FIRST_FLOAT_REG : 0) ! 79: ! 80: /* 1 if N is a possible register number for a function value. */ ! 81: ! 82: #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0 || (N)== FIRST_FLOAT_REG) ! 83: ! 84: /* Output assembler code to FILE to increment profiler label # LABELNO ! 85: for profiling a function entry. */ ! 86: ! 87: #undef FUNCTION_PROFILER ! 88: #define FUNCTION_PROFILER(FILE, LABELNO) \ ! 89: fprintf (FILE, "\tmovl $LP%d,%%eax\n\tcall mcount\n", (LABELNO)); ! 90: ! 91: /* Assember pseudo-op for shared data segment. */ ! 92: #define SHARED_SECTION_ASM_OP ".shdata" ! 93: ! 94: /* A C statement or statements which output an assembler instruction ! 95: opcode to the stdio stream STREAM. The macro-operand PTR is a ! 96: variable of type `char *' which points to the opcode name in its ! 97: "internal" form--the form that is written in the machine description. ! 98: ! 99: The Sequent assembler (identified as "Balance 8000 Assembler ! 100: 07/17/85 3.90" by "as -v") does not understand the `movs[bwl]' string ! 101: move mnemonics - it uses `smov[bwl]' instead. Change "movs" into ! 102: "smov", carefully avoiding the sign-extend opcodes. */ ! 103: ! 104: #define ASM_OUTPUT_OPCODE(STREAM, PTR) \ ! 105: { \ ! 106: if ((PTR)[0] == 'm' \ ! 107: && (PTR)[1] == 'o' \ ! 108: && (PTR)[2] == 'v' \ ! 109: && (PTR)[3] == 's' \ ! 110: && ((PTR)[4] == 'b' || (PTR)[4] == 'w' || (PTR)[4] == 'l') \ ! 111: && ((PTR)[5] == ' ' || (PTR)[5] == '\t'|| (PTR)[5] == '\0')) \ ! 112: { \ ! 113: fprintf (STREAM, "smov"); \ ! 114: (PTR) += 4; \ ! 115: } \ ! 116: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.