|
|
1.1 ! root 1: /* Definitions of target machine for GNU compiler. Iris version. ! 2: Copyright (C) 1991 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: #define SGI_TARGET 1 /* inform other mips files this is SGI */ ! 21: ! 22: /* Names to predefine in the preprocessor for this target machine. */ ! 23: ! 24: #define CPP_PREDEFINES "-Dunix -Dmips -Dsgi -DSVR3 -Dhost_mips -DMIPSEB -DSYSTYPE_SYSV" ! 25: ! 26: #define STARTFILE_SPEC "%{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}" ! 27: ! 28: #define CPP_SPEC "\ ! 29: %{!ansi:-D__EXTENSIONS__} -D_MIPSEB -D_SYSTYPE_SYSV \ ! 30: %{.S: -D_LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \ ! 31: %{.cc: -D_LANGUAGE_C_PLUS_PLUS} \ ! 32: %{.cxx: -D_LANGUAGE_C_PLUS_PLUS} \ ! 33: %{.C: -D_LANGUAGE_C_PLUS_PLUS} \ ! 34: %{.m: -D_LANGUAGE_OBJECTIVE_C} \ ! 35: %{!.S: %{!.cc: %{!.cxx: %{!.C: %{!.m: -D_LANGUAGE_C %{!ansi:-DLANGUAGE_C}}}}}}" ! 36: ! 37: #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p} crtn.o%s" ! 38: ! 39: #define MACHINE_TYPE "Silicon Graphics Mips" ! 40: ! 41: /* SGI Iris doesn't support -EB/-EL like other MIPS processors. */ ! 42: ! 43: #define ASM_SPEC "\ ! 44: %{!mgas: \ ! 45: %{!mrnames: %{!.s:-nocpp} %{.s: %{cpp} %{nocpp}}} \ ! 46: %{pipe: %e-pipe is not supported.} \ ! 47: %{mips1} %{mips2} %{mips3} \ ! 48: %{noasmopt:-O0} \ ! 49: %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}} \ ! 50: %{g} %{g0} %{g1} %{g2} %{g3} %{v} %{K} \ ! 51: %{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3} \ ! 52: %{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \ ! 53: %{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \ ! 54: %{gcoff:-g} %{gstabs0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}} \ ! 55: %{G*}" ! 56: ! 57: #define LINK_SPEC "\ ! 58: %{G*} \ ! 59: %{!mgas: %{mips1} %{mips2} %{mips3} \ ! 60: %{bestGnum} %{shared} %{non_shared}}" ! 61: ! 62: /* Always use 1 for .file number. I [[email protected]] wonder why ! 63: IRIS needs this. */ ! 64: ! 65: #define SET_FILE_NUMBER() num_source_filenames = 1 ! 66: ! 67: /* Put out a label after a .loc. I [[email protected]] wonder why ! 68: IRIS needs this. */ ! 69: ! 70: #define LABEL_AFTER_LOC(STREAM) fprintf (STREAM, "LM%d:\n", ++sym_lineno) ! 71: ! 72: #define STACK_ARGS_ADJUST(SIZE) \ ! 73: { \ ! 74: SIZE.constant += 4; \ ! 75: if (SIZE.constant < 32) \ ! 76: SIZE.constant = 32; \ ! 77: } ! 78: ! 79: /* Define this macro to control use of the character `$' in ! 80: identifier names. The value should be 0, 1, or 2. 0 means `$' ! 81: is not allowed by default; 1 means it is allowed by default if ! 82: `-traditional' is used; 2 means it is allowed by default provided ! 83: `-ansi' is not used. 1 is the default; there is no need to ! 84: define this macro in that case. */ ! 85: ! 86: #define DOLLARS_IN_IDENTIFIERS 0 ! 87: ! 88: /* Tell G++ not to create constructors or destructors with $'s in them. */ ! 89: ! 90: #define NO_DOLLAR_IN_LABEL 1 ! 91: ! 92: /* Specify size_t, ptrdiff_t, and wchar_t types. */ ! 93: #define SIZE_TYPE "unsigned int" ! 94: #define PTRDIFF_TYPE "int" ! 95: #define WCHAR_TYPE "unsigned char" ! 96: #define WCHAR_TYPE_SIZE BITS_PER_UNIT ! 97: ! 98: /* Generate calls to memcpy, etc., not bcopy, etc. */ ! 99: #define TARGET_MEM_FUNCTIONS ! 100: ! 101: /* Plain char is unsigned in the SGI compiler. */ ! 102: #define DEFAULT_SIGNED_CHAR 0 ! 103: ! 104: ! 105: /* A C statement to initialize the variable parts of a trampoline. ! 106: ADDR is an RTX for the address of the trampoline; FNADDR is an ! 107: RTX for the address of the nested function; STATIC_CHAIN is an ! 108: RTX for the static chain value that should be passed to the ! 109: function when it is called. ! 110: ! 111: Silicon Graphics machines are supposed to not have a mprotect ! 112: function to enable execute protection, but the stack already ! 113: has execute protection turned on. Because the MIPS chips have ! 114: no method to flush the icache without a system call, this can lose ! 115: if the same address is used for multiple trampolines. */ ! 116: ! 117: #define INITIALIZE_TRAMPOLINE(ADDR, FUNC, CHAIN) \ ! 118: { \ ! 119: rtx addr = ADDR; \ ! 120: emit_move_insn (gen_rtx (MEM, SImode, plus_constant (addr, 28)), FUNC); \ ! 121: emit_move_insn (gen_rtx (MEM, SImode, plus_constant (addr, 32)), CHAIN); \ ! 122: } ! 123: ! 124: ! 125: /* Attempt to turn on access permissions for the stack. */ ! 126: ! 127: #define TRANSFER_FROM_TRAMPOLINE \ ! 128: \ ! 129: void \ ! 130: __enable_execute_stack (addr) \ ! 131: char *addr; \ ! 132: { \ ! 133: } ! 134: ! 135: #include "mips/mips.h"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.