X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fconfig%2Fmips%2Fmips.h;h=77ea0e0e32ebe9d13d471fb808281a264587352b;hp=bd1d8b6fa287874556e40558a5ee0188327b3977;hb=f896c93243e0d8383f9902d3d71d1007b28200e0;hpb=92c473b849792cea6027fad87e53ae2096e82c13 diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index bd1d8b6fa28..77ea0e0e32e 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -1,34 +1,31 @@ /* Definitions of target machine for GNU compiler. MIPS version. Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 - 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Contributed by A. Lichnewsky (lich@inria.inria.fr). Changed by Michael Meissner (meissner@osf.org). 64 bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and Brendan Eich (brendan@microunity.com). -This file is part of GNU CC. +This file is part of GCC. -GNU CC is free software; you can redistribute it and/or modify +GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. -GNU CC is distributed in the hope that it will be useful, +GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU CC; see the file COPYING. If not, write to +along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Standard GCC variables that we reference. */ -extern char call_used_regs[]; -extern int may_call_alloca; -extern char **save_argv; extern int target_flags; /* MIPS external variables defined in mips.c. */ @@ -60,20 +57,20 @@ enum processor_type { PROCESSOR_R4100, PROCESSOR_R4111, PROCESSOR_R4120, + PROCESSOR_R4130, PROCESSOR_R4300, PROCESSOR_R4600, PROCESSOR_R4650, PROCESSOR_R5000, PROCESSOR_R5400, PROCESSOR_R5500, + PROCESSOR_R7000, PROCESSOR_R8000, + PROCESSOR_R9000, PROCESSOR_SB1, PROCESSOR_SR71000 }; -/* Recast the cpu class to be the cpu attribute. */ -#define mips_cpu_attr ((enum attr_cpu)mips_tune) - /* Which ABI to use. ABI_32 (original 32, or o32), ABI_N32 (n32), ABI_64 (n64) are all defined by SGI. ABI_O64 is o32 extended to work on a 64 bit machine. */ @@ -84,16 +81,6 @@ enum processor_type { #define ABI_EABI 3 #define ABI_O64 4 -/* Whether to emit abicalls code sequences or not. */ - -enum mips_abicalls_type { - MIPS_ABICALLS_NO, - MIPS_ABICALLS_YES -}; - -/* Recast the abicalls class to be the abicalls attribute. */ -#define mips_abicalls_attr ((enum attr_abicalls)mips_abicalls) - /* Information about one recognized processor. Defined here for the benefit of TARGET_CPU_CPP_BUILTINS. */ struct mips_cpu_info { @@ -115,11 +102,6 @@ extern char mips_reg_names[][8]; /* register names (a0 vs. $4). */ extern char mips_print_operand_punct[256]; /* print_operand punctuation chars */ extern const char *current_function_file; /* filename current function is in */ extern int num_source_filenames; /* current .file # */ -extern int inside_function; /* != 0 if inside of a function */ -extern int ignore_line_number; /* != 0 if we are to ignore next .loc */ -extern int file_in_function_warning; /* warning given about .file in func */ -extern int sdb_label_count; /* block start/end next label # */ -extern int sdb_begin_function_line; /* Starting Line of current function */ extern int mips_section_threshold; /* # bytes of data/sdata cutoff */ extern int sym_lineno; /* sgi next label # for each stmt */ extern int set_noreorder; /* # of nested .set noreorder's */ @@ -132,27 +114,18 @@ extern GTY(()) rtx branch_cmp[2]; /* operands for compare */ extern enum cmp_type branch_type; /* what type of branch to use */ extern enum processor_type mips_arch; /* which cpu to codegen for */ extern enum processor_type mips_tune; /* which cpu to schedule for */ -extern enum mips_abicalls_type mips_abicalls;/* for svr4 abi pic calls */ extern int mips_isa; /* architectural level */ -extern int mips16; /* whether generating mips16 code */ +extern int mips_abi; /* which ABI to use */ extern int mips16_hard_float; /* mips16 without -msoft-float */ -extern int mips_entry; /* generate entry/exit for mips16 */ extern const char *mips_arch_string; /* for -march= */ extern const char *mips_tune_string; /* for -mtune= */ extern const char *mips_isa_string; /* for -mips{1,2,3,4} */ extern const char *mips_abi_string; /* for -mabi={32,n32,64} */ -extern const char *mips_entry_string; /* for -mentry */ -extern const char *mips_no_mips16_string;/* for -mno-mips16 */ extern const char *mips_cache_flush_func;/* for -mflush-func= and -mno-flush-func */ -extern int mips_string_length; /* length of strings for mips16 */ extern const struct mips_cpu_info mips_cpu_info_table[]; extern const struct mips_cpu_info *mips_arch_info; extern const struct mips_cpu_info *mips_tune_info; -/* Functions to change what output section we are using. */ -extern void sdata_section PARAMS ((void)); -extern void sbss_section PARAMS ((void)); - /* Macros to silence warnings about numbers being signed in traditional C and unsigned in ISO C when compiled on 32-bit hosts. */ @@ -169,7 +142,8 @@ extern void sbss_section PARAMS ((void)); #define MASK_INT64 0x00000001 /* ints are 64 bits */ #define MASK_LONG64 0x00000002 /* longs are 64 bits */ #define MASK_SPLIT_ADDR 0x00000004 /* Address splitting is enabled. */ -#define MASK_GPOPT 0x00000008 /* Optimize for global pointer */ +#define MASK_NO_FUSED_MADD 0x00000008 /* Don't generate floating point + multiply-add operations. */ #define MASK_GAS 0x00000010 /* Gas used instead of MIPS as */ #define MASK_NAME_REGS 0x00000020 /* Use MIPS s/w reg name convention */ #define MASK_EXPLICIT_RELOCS 0x00000040 /* Use relocation operators. */ @@ -177,36 +151,32 @@ extern void sbss_section PARAMS ((void)); #define MASK_SOFT_FLOAT 0x00000100 /* software floating point */ #define MASK_FLOAT64 0x00000200 /* fp registers are 64 bits */ #define MASK_ABICALLS 0x00000400 /* emit .abicalls/.cprestore/.cpload */ -#define MASK_UNUSED1 0x00000800 /* Unused Mask. */ +#define MASK_XGOT 0x00000800 /* emit big-got PIC */ #define MASK_LONG_CALLS 0x00001000 /* Always call through a register */ #define MASK_64BIT 0x00002000 /* Use 64 bit GP registers and insns */ -#define MASK_EMBEDDED_PIC 0x00004000 /* Generate embedded PIC code */ -#define MASK_EMBEDDED_DATA 0x00008000 /* Reduce RAM usage, not fast code */ -#define MASK_BIG_ENDIAN 0x00010000 /* Generate big endian code */ -#define MASK_SINGLE_FLOAT 0x00020000 /* Only single precision FPU. */ -#define MASK_MAD 0x00040000 /* Generate mad/madu as on 4650. */ -#define MASK_4300_MUL_FIX 0x00080000 /* Work-around early Vr4300 CPU bug */ -#define MASK_MIPS16 0x00100000 /* Generate mips16 code */ +#define MASK_EMBEDDED_DATA 0x00004000 /* Reduce RAM usage, not fast code */ +#define MASK_BIG_ENDIAN 0x00008000 /* Generate big endian code */ +#define MASK_SINGLE_FLOAT 0x00010000 /* Only single precision FPU. */ +#define MASK_MAD 0x00020000 /* Generate mad/madu as on 4650. */ +#define MASK_4300_MUL_FIX 0x00040000 /* Work-around early Vr4300 CPU bug */ +#define MASK_MIPS16 0x00080000 /* Generate mips16 code */ #define MASK_NO_CHECK_ZERO_DIV \ - 0x00200000 /* divide by zero checking */ -#define MASK_BRANCHLIKELY 0x00400000 /* Generate Branch Likely + 0x00100000 /* divide by zero checking */ +#define MASK_BRANCHLIKELY 0x00200000 /* Generate Branch Likely instructions. */ #define MASK_UNINIT_CONST_IN_RODATA \ - 0x00800000 /* Store uninitialized + 0x00400000 /* Store uninitialized consts in rodata */ -#define MASK_NO_FUSED_MADD 0x01000000 /* Don't generate floating point - multiply-add operations. */ +#define MASK_FIX_R4000 0x00800000 /* Work around R4000 errata. */ +#define MASK_FIX_R4400 0x01000000 /* Work around R4400 errata. */ +#define MASK_FIX_SB1 0x02000000 /* Work around SB-1 errata. */ +#define MASK_FIX_VR4120 0x04000000 /* Work around VR4120 errata. */ +#define MASK_VR4130_ALIGN 0x08000000 /* Perform VR4130 alignment opts. */ +#define MASK_FP_EXCEPTIONS 0x10000000 /* FP exceptions are enabled. */ /* Debug switches, not documented */ #define MASK_DEBUG 0 /* unused */ -#define MASK_DEBUG_A 0 /* don't allow