⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mips.h

📁 gcc3.2.1源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
#define ISA_HAS_DCLZ_DCLO       (mips_isa == 64)/* CC1_SPEC causes -mips3 and -mips4 to set -mfp64 and -mgp64; -mips1 or   -mips2 sets -mfp32 and -mgp32.  This can be overridden by an explicit   -mfp32, -mfp64, -mgp32 or -mgp64.  -mfp64 sets MASK_FLOAT64 in   target_flags, and -mgp64 sets MASK_64BIT.   Setting MASK_64BIT in target_flags will cause gcc to assume that   registers are 64 bits wide.  int, long and void * will be 32 bit;   this may be changed with -mint64 or -mlong64.   The gen* programs link code that refers to MASK_64BIT.  They don't   actually use the information in target_flags; they just refer to   it.  *//* Switch  Recognition by gcc.c.  Add -G xx support */#undef  SWITCH_TAKES_ARG#define SWITCH_TAKES_ARG(CHAR)						\  (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G')/* Sometimes certain combinations of command options do not make sense   on a particular target machine.  You can define a macro   `OVERRIDE_OPTIONS' to take account of this.  This macro, if   defined, is executed once just after all the command options have   been parsed.   On the MIPS, it is used to handle -G.  We also use it to set up all   of the tables referenced in the other macros.  */#define OVERRIDE_OPTIONS override_options ()/* Zero or more C statements that may conditionally modify two   variables `fixed_regs' and `call_used_regs' (both of type `char   []') after they have been initialized from the two preceding   macros.   This is necessary in case the fixed or call-clobbered registers   depend on target flags.   You need not define this macro if it has no work to do.   If the usage of an entire class of registers depends on the target   flags, you may indicate this to GCC by using this macro to modify   `fixed_regs' and `call_used_regs' to 1 for each of the registers in   the classes which should not be used by GCC.  Also define the macro   `REG_CLASS_FROM_LETTER' to return `NO_REGS' if it is called with a   letter for a class that shouldn't be used.   (However, if this class is not included in `GENERAL_REGS' and all   of the insn patterns whose constraints permit this class are   controlled by target switches, then GCC will automatically avoid   using these registers when the target switches are opposed to   them.)  */#define CONDITIONAL_REGISTER_USAGE					\do									\  {									\    if (!TARGET_HARD_FLOAT)						\      {									\	int regno;							\									\	for (regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\	for (regno = ST_REG_FIRST; regno <= ST_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\      }									\    else if (! ISA_HAS_8CC)						\      {									\	int regno;							\									\	/* We only have a single condition code register.  We		\           implement this by hiding all the condition code registers,	\           and generating RTL that refers directly to ST_REG_FIRST.  */	\	for (regno = ST_REG_FIRST; regno <= ST_REG_LAST; regno++)	\	  fixed_regs[regno] = call_used_regs[regno] = 1;		\      }									\    /* In mips16 mode, we permit the $t temporary registers to be used	\       for reload.  We prohibit the unused $s registers, since they	\       are caller saved, and saving them via a mips16 register would	\       probably waste more time than just reloading the value.  */	\    if (TARGET_MIPS16)							\      {									\	fixed_regs[18] = call_used_regs[18] = 1;                        \	fixed_regs[19] = call_used_regs[19] = 1;                        \	fixed_regs[20] = call_used_regs[20] = 1;                        \	fixed_regs[21] = call_used_regs[21] = 1;                        \	fixed_regs[22] = call_used_regs[22] = 1;                        \	fixed_regs[23] = call_used_regs[23] = 1;                        \	fixed_regs[26] = call_used_regs[26] = 1;                        \	fixed_regs[27] = call_used_regs[27] = 1;                        \	fixed_regs[30] = call_used_regs[30] = 1;                        \      }									\    SUBTARGET_CONDITIONAL_REGISTER_USAGE				\  }									\while (0)/* This is meant to be redefined in the host dependent files.  */#define SUBTARGET_CONDITIONAL_REGISTER_USAGE/* Show we can debug even without a frame pointer.  */#define CAN_DEBUG_WITHOUT_FP/* Complain about missing specs and predefines that should be defined in each   of the target tm files to override the defaults.  This is mostly a place-   holder until I can get each of the files updated [mm].  */#if defined(OSF_OS) \    || defined(DECSTATION) \    || defined(SGI_TARGET) \    || defined(MIPS_NEWS) \    || defined(MIPS_SYSV) \    || defined(MIPS_SVR4) \    || defined(MIPS_BSD43)#ifndef CPP_PREDEFINES	#error "Define CPP_PREDEFINES in the appropriate tm.h file"#endif#ifndef LIB_SPEC	#error "Define LIB_SPEC in the appropriate tm.h file"#endif#ifndef STARTFILE_SPEC	#error "Define STARTFILE_SPEC in the appropriate tm.h file"#endif#ifndef MACHINE_TYPE	#error "Define MACHINE_TYPE in the appropriate tm.h file"#endif#endif/* Tell collect what flags to pass to nm.  */#ifndef NM_FLAGS#define NM_FLAGS "-Bn"#endif/* Names to predefine in the preprocessor for this target machine.  */#ifndef CPP_PREDEFINES#define CPP_PREDEFINES "-Dmips -Dunix -Dhost_mips -DMIPSEB -DR3000 -DSYSTYPE_BSD43 \-D_mips -D_unix -D_host_mips -D_MIPSEB -D_R3000 -D_SYSTYPE_BSD43 \-Asystem=unix -Asystem=bsd -Acpu=mips -Amachine=mips"#endif/* Assembler specs.  *//* MIPS_AS_ASM_SPEC is passed when using the MIPS assembler rather   than gas.  */#define MIPS_AS_ASM_SPEC "\%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} \%{pipe: %e-pipe is not supported} \%{K} %(subtarget_mips_as_asm_spec)"/* SUBTARGET_MIPS_AS_ASM_SPEC is passed when using the MIPS assembler   rather than gas.  It may be overridden by subtargets.  */#ifndef SUBTARGET_MIPS_AS_ASM_SPEC#define SUBTARGET_MIPS_AS_ASM_SPEC "%{v}"#endif/* GAS_ASM_SPEC is passed when using gas, rather than the MIPS   assembler.  */#define GAS_ASM_SPEC "%{march=*} %{mtune=*} %{mcpu=*} %{m4650} %{mmad:-m4650} %{m3900} %{v} %{mgp32} %{mgp64} %(abi_gas_asm_spec) %{mabi=32:%{!mips*:-mips1}}"extern int mips_abi;#ifndef MIPS_ABI_DEFAULT#define MIPS_ABI_DEFAULT ABI_32#endif#ifndef ABI_GAS_ASM_SPEC#define ABI_GAS_ASM_SPEC ""#endif/* TARGET_ASM_SPEC is used to select either MIPS_AS_ASM_SPEC or   GAS_ASM_SPEC as the default, depending upon the value of   TARGET_DEFAULT.  */#if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) != 0/* GAS */#define TARGET_ASM_SPEC "\%{mmips-as: %(mips_as_asm_spec)} \%{!mmips-as: %(gas_asm_spec)}"#else /* not GAS */#define TARGET_ASM_SPEC "\%{!mgas: %(mips_as_asm_spec)} \%{mgas: %(gas_asm_spec)}"#endif /* not GAS *//* SUBTARGET_ASM_OPTIMIZING_SPEC handles passing optimization options   to the assembler.  It may be overridden by subtargets.  */#ifndef SUBTARGET_ASM_OPTIMIZING_SPEC#define SUBTARGET_ASM_OPTIMIZING_SPEC "\%{noasmopt:-O0} \%{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}}"#endif/* SUBTARGET_ASM_DEBUGGING_SPEC handles passing debugging options to   the assembler.  It may be overridden by subtargets.  */#ifndef SUBTARGET_ASM_DEBUGGING_SPEC#define SUBTARGET_ASM_DEBUGGING_SPEC "\%{g} %{g0} %{g1} %{g2} %{g3} \%{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3} \%{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \%{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3} \%{gcoff:-g} %{gcoff0:-g0} %{gcoff1:-g1} %{gcoff2:-g2} %{gcoff3:-g3}"#endif/* SUBTARGET_ASM_SPEC is always passed to the assembler.  It may be   overridden by subtargets.  */#ifndef SUBTARGET_ASM_SPEC#define SUBTARGET_ASM_SPEC ""#endif/* ASM_SPEC is the set of arguments to pass to the assembler.  */#undef ASM_SPEC#define ASM_SPEC "\%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64}\%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} \%(subtarget_asm_optimizing_spec) \%(subtarget_asm_debugging_spec) \%{membedded-pic} \%{mabi=32:-32}%{mabi=o32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} \%(target_asm_spec) \%(subtarget_asm_spec)"/* Specify to run a post-processor, mips-tfile after the assembler   has run to stuff the mips debug information into the object file.   This is needed because the $#!%^ MIPS assembler provides no way   of specifying such information in the assembly file.  If we are   cross compiling, disable mips-tfile unless the user specifies   -mmips-tfile.  */#ifndef ASM_FINAL_SPEC#if ((TARGET_CPU_DEFAULT | TARGET_DEFAULT) & MASK_GAS) != 0/* GAS */#define ASM_FINAL_SPEC "\%{mmips-as: %{!mno-mips-tfile: \	\n mips-tfile %{v*: -v} \		%{K: -I %b.o~} \		%{!K: %{save-temps: -I %b.o~}} \		%{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \		%{.s:%i} %{!.s:%g.s}}}"#else/* not GAS */#define ASM_FINAL_SPEC "\%{!mgas: %{!mno-mips-tfile: \	\n mips-tfile %{v*: -v} \		%{K: -I %b.o~} \		%{!K: %{save-temps: -I %b.o~}} \		%{c:%W{o*}%{!o*:-o %b.o}}%{!c:-o %U.o} \		%{.s:%i} %{!.s:%g.s}}}"#endif#endif	/* ASM_FINAL_SPEC *//* Redefinition of libraries used.  Mips doesn't support normal   UNIX style profiling via calling _mcount.  It does offer   profiling that samples the PC, so do what we can...  */#ifndef LIB_SPEC#define LIB_SPEC "%{pg:-lprof1} %{p:-lprof1} -lc"#endif/* Extra switches sometimes passed to the linker.  *//* ??? The bestGnum will never be passed to the linker, because the gcc driver  will interpret it as a -b option.  */#ifndef LINK_SPEC#define LINK_SPEC "\%(endian_spec) \%{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64} \%{bestGnum} %{shared} %{non_shared}"#endif  /* LINK_SPEC defined *//* Specs for the compiler proper *//* SUBTARGET_CC1_SPEC is passed to the compiler proper.  It may be   overridden by subtargets.  */#ifndef SUBTARGET_CC1_SPEC#define SUBTARGET_CC1_SPEC ""#endif/* Deal with historic options.  */#ifndef CC1_CPU_SPEC#define CC1_CPU_SPEC "\%{!mcpu*: \%{m3900:-march=r3900 -mips1 -mfp32 -mgp32 \%n`-m3900' is deprecated. Use `-march=r3900' instead.\n} \%{m4650:-march=r4650 -mmad -msingle-float \%n`-m4650' is deprecated. Use `-march=r4650' instead.\n}}"#endif/* CC1_SPEC is the set of arguments to pass to the compiler proper.  *//* Note, we will need to adjust the following if we ever find a MIPS variant   that has 32-bit GPRs and 64-bit FPRs as well as fix all of the reload bugs   that show up in this case.  */#ifndef CC1_SPEC#define CC1_SPEC "\%{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \%{mips1:-mfp32 -mgp32} %{mips2:-mfp32 -mgp32}\%{mips3:%{!msingle-float:%{!m4650:-mfp64}} -mgp64} \%{mips4:%{!msingle-float:%{!m4650:-mfp64}} -mgp64} \%{mips32:-mfp32 -mgp32} \%{mips64:%{!msingle-float:%{!m4650:-mfp64}} -mgp64} \%{mfp64:%{msingle-float:%emay not use both -mfp64 and -msingle-float}} \%{mfp64:%{m4650:%emay not use both -mfp64 and -m4650}} \%{mint64|mlong64|mlong32:-mexplicit-type-size }\%{mgp32: %{mfp64:%emay not use both -mgp32 and -mfp64} %{!mfp32: -mfp32}} \%{G*} %{EB:-meb} %{EL:-mel} %{EB:%{EL:%emay not use both -EB and -EL}} \%{pic-none:   -mno-half-pic} \%{pic-lib:    -mhalf-pic} \%{pic-extern: -mhalf-pic} \%{pic-calls:  -mhalf-pic} \%{save-temps: } \%(subtarget_cc1_spec) \%(cc1_cpu_spec)"#endif/* Preprocessor specs.  *//* SUBTARGET_CPP_SIZE_SPEC defines SIZE_TYPE and PTRDIFF_TYPE.  It may   be overridden by subtargets.  */#ifndef SUBTARGET_CPP_SIZE_SPEC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -