Annotation of gcc/config/mips/iris3.h, revision 1.1.1.1

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"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.