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

📄 sparc.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
%{mcpu=sparclite:-D__sparclite__} \%{mcpu=f930:-D__sparclite__} %{mcpu=f934:-D__sparclite__} \%{mcpu=v8:-D__sparc_v8__} \%{mcpu=supersparc:-D__supersparc__ -D__sparc_v8__} \%{mcpu=hypersparc:-D__hypersparc__ -D__sparc_v8__} \%{mcpu=sparclite86x:-D__sparclite86x__} \%{mcpu=v9:-D__sparc_v9__} \%{mcpu=ultrasparc:-D__sparc_v9__} \%{mcpu=ultrasparc3:-D__sparc_v9__} \%{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:%(cpp_cpu_default)}}}}}}} \"#define CPP_ARCH32_SPEC ""#define CPP_ARCH64_SPEC "-D__arch64__"#define CPP_ARCH_DEFAULT_SPEC \(DEFAULT_ARCH32_P ? CPP_ARCH32_SPEC : CPP_ARCH64_SPEC)#define CPP_ARCH_SPEC "\%{m32:%(cpp_arch32)} \%{m64:%(cpp_arch64)} \%{!m32:%{!m64:%(cpp_arch_default)}} \"/* Macros to distinguish endianness.  */#define CPP_ENDIAN_SPEC "\%{mlittle-endian:-D__LITTLE_ENDIAN__} \%{mlittle-endian-data:-D__LITTLE_ENDIAN_DATA__}"/* Macros to distinguish the particular subtarget.  */#define CPP_SUBTARGET_SPEC ""#define CPP_SPEC "%(cpp_cpu) %(cpp_arch) %(cpp_endian) %(cpp_subtarget)"/* Prevent error on `-sun4' and `-target sun4' options.  *//* This used to translate -dalign to -malign, but that is no good   because it can't turn off the usual meaning of making debugging dumps.  *//* Translate old style -m<cpu> into new style -mcpu=<cpu>.   ??? Delete support for -m<cpu> for 2.9.  */#define CC1_SPEC "\%{sun4:} %{target:} \%{mcypress:-mcpu=cypress} \%{msparclite:-mcpu=sparclite} %{mf930:-mcpu=f930} %{mf934:-mcpu=f934} \%{mv8:-mcpu=v8} %{msupersparc:-mcpu=supersparc} \"/* Override in target specific files.  */#define ASM_CPU_SPEC "\%{mcpu=sparclet:-Asparclet} %{mcpu=tsc701:-Asparclet} \%{msparclite:-Asparclite} \%{mf930:-Asparclite} %{mf934:-Asparclite} \%{mcpu=sparclite:-Asparclite} \%{mcpu=sparclite86x:-Asparclite} \%{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} \%{mv8plus:-Av8plus} \%{mcpu=v9:-Av9} \%{mcpu=ultrasparc:%{!mv8plus:-Av9a}} \%{mcpu=ultrasparc3:%{!mv8plus:-Av9b}} \%{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:%(asm_cpu_default)}}}}}}} \"/* Word size selection, among other things.   This is what GAS uses.  Add %(asm_arch) to ASM_SPEC to enable.  */#define ASM_ARCH32_SPEC "-32"#ifdef HAVE_AS_REGISTER_PSEUDO_OP#define ASM_ARCH64_SPEC "-64 -no-undeclared-regs"#else#define ASM_ARCH64_SPEC "-64"#endif#define ASM_ARCH_DEFAULT_SPEC \(DEFAULT_ARCH32_P ? ASM_ARCH32_SPEC : ASM_ARCH64_SPEC)#define ASM_ARCH_SPEC "\%{m32:%(asm_arch32)} \%{m64:%(asm_arch64)} \%{!m32:%{!m64:%(asm_arch_default)}} \"#ifdef HAVE_AS_RELAX_OPTION#define ASM_RELAX_SPEC "%{!mno-relax:-relax}"#else#define ASM_RELAX_SPEC ""#endif/* Special flags to the Sun-4 assembler when using pipe for input.  */#define ASM_SPEC "\%{R} %{!pg:%{!p:%{fpic|fPIC|fpie|fPIE:-k}}} %{keep-local-as-symbols:-L} \%(asm_cpu) %(asm_relax)"#define AS_NEEDS_DASH_FOR_PIPED_INPUT/* This macro defines names of additional specifications to put in the specs   that can be used in various specifications like CC1_SPEC.  Its definition   is an initializer with a subgrouping for each command option.   Each subgrouping contains a string constant, that defines the   specification name, and a string constant that used by the GCC driver   program.   Do not define this macro if it does not need to do anything.  */#define EXTRA_SPECS \  { "cpp_cpu",		CPP_CPU_SPEC },		\  { "cpp_cpu_default",	CPP_CPU_DEFAULT_SPEC },	\  { "cpp_arch32",	CPP_ARCH32_SPEC },	\  { "cpp_arch64",	CPP_ARCH64_SPEC },	\  { "cpp_arch_default",	CPP_ARCH_DEFAULT_SPEC },\  { "cpp_arch",		CPP_ARCH_SPEC },	\  { "cpp_endian",	CPP_ENDIAN_SPEC },	\  { "cpp_subtarget",	CPP_SUBTARGET_SPEC },	\  { "asm_cpu",		ASM_CPU_SPEC },		\  { "asm_cpu_default",	ASM_CPU_DEFAULT_SPEC },	\  { "asm_arch32",	ASM_ARCH32_SPEC },	\  { "asm_arch64",	ASM_ARCH64_SPEC },	\  { "asm_relax",	ASM_RELAX_SPEC },	\  { "asm_arch_default",	ASM_ARCH_DEFAULT_SPEC },\  { "asm_arch",		ASM_ARCH_SPEC },	\  SUBTARGET_EXTRA_SPECS#define SUBTARGET_EXTRA_SPECS/* Because libgcc can generate references back to libc (via .umul etc.) we have   to list libc again after the second libgcc.  */#define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G %L"#define PTRDIFF_TYPE (TARGET_ARCH64 ? "long int" : "int")#define SIZE_TYPE (TARGET_ARCH64 ? "long unsigned int" : "unsigned int")/* ??? This should be 32 bits for v9 but what can we do?  */#define WCHAR_TYPE "short unsigned int"#define WCHAR_TYPE_SIZE 16/* Show we can debug even without a frame pointer.  */#define CAN_DEBUG_WITHOUT_FP#define OVERRIDE_OPTIONS  sparc_override_options ()/* Run-time compilation parameters selecting different hardware subsets.  */extern int target_flags;/* Nonzero if we should generate code to use the fpu.  */#define MASK_FPU 1#define TARGET_FPU (target_flags & MASK_FPU)/* Nonzero if we should assume that double pointers might be unaligned.   This can happen when linking gcc compiled code with other compilers,   because the ABI only guarantees 4 byte alignment.  */#define MASK_UNALIGNED_DOUBLES 4#define TARGET_UNALIGNED_DOUBLES (target_flags & MASK_UNALIGNED_DOUBLES)/* Nonzero means that we should generate code for a v8 sparc.  */#define MASK_V8 0x8#define TARGET_V8 (target_flags & MASK_V8)/* Nonzero means that we should generate code for a sparclite.   This enables the sparclite specific instructions, but does not affect   whether FPU instructions are emitted.  */#define MASK_SPARCLITE 0x10#define TARGET_SPARCLITE (target_flags & MASK_SPARCLITE)/* Nonzero if we're compiling for the sparclet.  */#define MASK_SPARCLET 0x20#define TARGET_SPARCLET (target_flags & MASK_SPARCLET)/* Nonzero if we're compiling for v9 sparc.   Note that v9's can run in 32 bit mode so this doesn't necessarily mean   the word size is 64.  */#define MASK_V9 0x40#define TARGET_V9 (target_flags & MASK_V9)/* Nonzero to generate code that uses the instructions deprecated in   the v9 architecture.  This option only applies to v9 systems.  *//* ??? This isn't user selectable yet.  It's used to enable such insns   on 32 bit v9 systems and for the moment they're permanently disabled   on 64 bit v9 systems.  */#define MASK_DEPRECATED_V8_INSNS 0x80#define TARGET_DEPRECATED_V8_INSNS (target_flags & MASK_DEPRECATED_V8_INSNS)/* Mask of all CPU selection flags.  */#define MASK_ISA \(MASK_V8 + MASK_SPARCLITE + MASK_SPARCLET + MASK_V9 + MASK_DEPRECATED_V8_INSNS)/* Nonzero means don't pass `-assert pure-text' to the linker.  */#define MASK_IMPURE_TEXT 0x100#define TARGET_IMPURE_TEXT (target_flags & MASK_IMPURE_TEXT)/* 0x200 is unused *//* Nonzero means use the registers that the SPARC ABI reserves for   application software.  This must be the default to coincide with the   setting in FIXED_REGISTERS.  */#define MASK_APP_REGS 0x400#define TARGET_APP_REGS (target_flags & MASK_APP_REGS)/* Option to select how quad word floating point is implemented.   When TARGET_HARD_QUAD is true, we use the hardware quad instructions.   Otherwise, we use the SPARC ABI quad library functions.  */#define MASK_HARD_QUAD 0x800#define TARGET_HARD_QUAD (target_flags & MASK_HARD_QUAD)/* Nonzero on little-endian machines.  *//* ??? Little endian support currently only exists for sparc86x-elf and   sparc64-elf configurations.  May eventually want to expand the support   to all targets, but for now it's kept local to only those two.  */#define MASK_LITTLE_ENDIAN 0x1000#define TARGET_LITTLE_ENDIAN (target_flags & MASK_LITTLE_ENDIAN)/* 0x2000, 0x4000 are unused *//* Nonzero if pointers are 64 bits.  */#define MASK_PTR64 0x8000#define TARGET_PTR64 (target_flags & MASK_PTR64)/* Nonzero if generating code to run in a 64 bit environment.   This is intended to only be used by TARGET_ARCH{32,64} as they are the   mechanism used to control compile time or run time selection.  */#define MASK_64BIT 0x10000#define TARGET_64BIT (target_flags & MASK_64BIT)/* 0x20000,0x40000 unused *//* Nonzero means use a stack bias of 2047.  Stack offsets are obtained by   adding 2047 to %sp.  This option is for v9 only and is the default.  */#define MASK_STACK_BIAS 0x80000#define TARGET_STACK_BIAS (target_flags & MASK_STACK_BIAS)/* 0x100000,0x200000 unused *//* Nonzero means -m{,no-}fpu was passed on the command line.  */#define MASK_FPU_SET 0x400000#define TARGET_FPU_SET (target_flags & MASK_FPU_SET)/* Use the UltraSPARC Visual Instruction Set extensions.  */#define MASK_VIS 0x1000000#define TARGET_VIS (target_flags & MASK_VIS)/* Compile for Solaris V8+.  32 bit Solaris preserves the high bits of   the current out and global registers and Linux 2.2+ as well.  */#define MASK_V8PLUS 0x2000000#define TARGET_V8PLUS (target_flags & MASK_V8PLUS)/* Force a the fastest alignment on structures to take advantage of   faster copies.  */#define MASK_FASTER_STRUCTS 0x4000000#define TARGET_FASTER_STRUCTS (target_flags & MASK_FASTER_STRUCTS)/* Use IEEE quad long double.  */#define MASK_LONG_DOUBLE_128 0x8000000#define TARGET_LONG_DOUBLE_128 (target_flags & MASK_LONG_DOUBLE_128)/* TARGET_HARD_MUL: Use hardware multiply instructions but not %y.   TARGET_HARD_MUL32: Use hardware multiply instructions with rd %y   to get high 32 bits.  False in V8+ or V9 because multiply stores   a 64 bit result in a register.  */#define TARGET_HARD_MUL32				\  ((TARGET_V8 || TARGET_SPARCLITE			\    || TARGET_SPARCLET || TARGET_DEPRECATED_V8_INSNS)	\   && ! TARGET_V8PLUS && TARGET_ARCH32)#define TARGET_HARD_MUL					\  (TARGET_V8 || TARGET_SPARCLITE || TARGET_SPARCLET	\   || TARGET_DEPRECATED_V8_INSNS || TARGET_V8PLUS)/* Macro to define tables used to set the flags.   This is a list in braces of pairs in braces,   each pair being { "NAME", VALUE }   where VALUE is the bits to set or minus the bits to clear.   An empty string NAME is used to identify the default VALUE.  */#define TARGET_SWITCHES  \  { {"fpu", MASK_FPU | MASK_FPU_SET,					\     N_("Use hardware fp") },						\    {"no-fpu", -MASK_FPU,						\     N_("Do not use hardware fp") },					\    {"no-fpu", MASK_FPU_SET,				NULL, },	\    {"hard-float", MASK_FPU | MASK_FPU_SET,				\     N_("Use hardware fp") },						\    {"soft-float", -MASK_FPU,						\     N_("Do not use hardware fp") },					\    {"soft-float", MASK_FPU_SET,			NULL },		\    {"unaligned-doubles", MASK_UNALIGNED_DOUBLES,			\     N_("Assume possible double misalignment") },			\    {"no-unaligned-doubles", -MASK_UNALIGNED_DOUBLES,			\     N_("Assume all doubles are aligned") },				\    {"impure-text", MASK_IMPURE_TEXT,					\     N_("Pass -assert pure-text to linker") }, 				\    {"no-impure-text", -MASK_IMPURE_TEXT,				\     N_("Do not pass -assert pure-text to linker") }, 			\    {"app-regs", MASK_APP_REGS,						\     N_("Use ABI reserved registers") },				\    {"no-app-regs", -MASK_APP_REGS,					\     N_("Do not use ABI reserved registers") }, 			\    {"hard-quad-float", MASK_HARD_QUAD,					\     N_("Use hardware quad fp instructions") }, 			\    {"soft-quad-float", -MASK_HARD_QUAD,				\     N_("Do not use hardware quad fp instructions") }, 			\    {"v8plus", MASK_V8PLUS,						\     N_("Compile for v8plus ABI") },					\    {"no-v8plus", -MASK_V8PLUS,						\     N_("Do not compile for v8plus ABI") }, 				\    {"vis", MASK_VIS,							\     N_("Utilize Visual Instruction Set") }, 				\    {"no-vis", -MASK_VIS,						\     N_("Do not utilize Visual Instruction Set") }, 			\    {"ptr64", MASK_PTR64,						\     N_("Pointers are 64-bit") }, 					\    {"ptr32", -MASK_PTR64,						\     N_("Pointers are 32-bit") }, 					\    {"32", -MASK_64BIT,							\     N_("Use 32-bit ABI") }, 						\    {"64", MASK_64BIT,							\     N_("Use 64-bit ABI") }, 						\    {"stack-bias", MASK_STACK_BIAS,					\     N_("Use stack bias") }, 						\    {"no-stack-bias", -MASK_STACK_BIAS,					\     N_("Do not use stack bias") }, 					\    {"faster-structs", MASK_FASTER_STRUCTS,				\     N_("Use structs on stronger alignment for double-word copies") }, 	\    {"no-faster-structs", -MASK_FASTER_STRUCTS,				\     N_("Do not use structs on stronger alignment for double-word copies") }, \    {"relax", 0,							\     N_("Optimize tail call instructions in assembler and linker") },	\    {"no-relax", 0,							\     N_("Do not optimize tail call instructions in assembler or linker") }, \    SUBTARGET_SWITCHES			\    { "", TARGET_DEFAULT, ""}}/* MASK_APP_REGS must always be the default because that's what   FIXED_REGISTERS is set to and -ffixed- is processed before   CONDITIONAL_REGISTER_USAGE is called (where we process -mno-app-regs).  */#define TARGET_DEFAULT (MASK_APP_REGS + MASK_FPU)/* This is meant to be redefined in target specific files.  */#define SUBTARGET_SWITCHES/* Processor type.   These must match the values for the cpu attribute in sparc.md.  */enum processor_type {  PROCESSOR_V7,  PROCESSOR_CYPRESS,  PROCESSOR_V8,

⌨️ 快捷键说明

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