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

📄 rs6000.h

📁 gcc编译工具没有什么特别
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine for GNU compiler, for IBM RS/6000.   Copyright (C) 1992, 93-8, 1999 Free Software Foundation, Inc.   Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe 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,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  *//* Note that some other tm.h files include this one and then override   many of the definitions that relate to assembler syntax.  *//* Names to predefine in the preprocessor for this target machine.  */#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_LONG_LONG \-Asystem(unix) -Asystem(aix) -Acpu(rs6000) -Amachine(rs6000)"/* Print subsidiary information on the compiler version in use.  */#define TARGET_VERSION ;/* Default string to use for cpu if not specified.  */#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT ((char *)0)#endif/* Tell the assembler to assume that all undefined names are external.   Don't do this until the fixed IBM assembler is more generally available.   When this becomes permanently defined, the ASM_OUTPUT_EXTERNAL,   ASM_OUTPUT_EXTERNAL_LIBCALL, and RS6000_OUTPUT_BASENAME macros will no   longer be needed.  Also, the extern declaration of mcount in ASM_FILE_START   will no longer be needed.  *//* #define ASM_SPEC "-u %(asm_cpu)" *//* Define appropriate architecture macros for preprocessor depending on   target switches.  */#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %(cpp_cpu)"/* Common CPP definitions used by CPP_SPEC among the various targets   for handling -mcpu=xxx switches.  */#define CPP_CPU_SPEC \"%{!mcpu*: \  %{mpower: %{!mpower2: -D_ARCH_PWR}} \  %{mpower2: -D_ARCH_PWR2} \  %{mpowerpc*: -D_ARCH_PPC} \  %{mno-power: %{!mpowerpc*: -D_ARCH_COM}} \  %{!mno-power: %{!mpower2: %(cpp_default)}}} \%{mcpu=common: -D_ARCH_COM} \%{mcpu=power: -D_ARCH_PWR} \%{mcpu=power2: -D_ARCH_PWR2} \%{mcpu=powerpc: -D_ARCH_PPC} \%{mcpu=rios: -D_ARCH_PWR} \%{mcpu=rios1: -D_ARCH_PWR} \%{mcpu=rios2: -D_ARCH_PWR2} \%{mcpu=rsc: -D_ARCH_PWR} \%{mcpu=rsc1: -D_ARCH_PWR} \%{mcpu=401: -D_ARCH_PPC} \%{mcpu=403: -D_ARCH_PPC} \%{mcpu=505: -D_ARCH_PPC} \%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \%{mcpu=602: -D_ARCH_PPC} \%{mcpu=603: -D_ARCH_PPC} \%{mcpu=603e: -D_ARCH_PPC} \%{mcpu=ec603e: -D_ARCH_PPC} \%{mcpu=604: -D_ARCH_PPC} \%{mcpu=604e: -D_ARCH_PPC} \%{mcpu=620: -D_ARCH_PPC} \%{mcpu=740: -D_ARCH_PPC} \%{mcpu=750: -D_ARCH_PPC} \%{mcpu=801: -D_ARCH_PPC} \%{mcpu=821: -D_ARCH_PPC} \%{mcpu=823: -D_ARCH_PPC} \%{mcpu=860: -D_ARCH_PPC}"#ifndef CPP_DEFAULT_SPEC#define CPP_DEFAULT_SPEC "-D_ARCH_PWR"#endif#ifndef CPP_SYSV_SPEC#define CPP_SYSV_SPEC ""#endif#ifndef CPP_ENDIAN_SPEC#define CPP_ENDIAN_SPEC ""#endif#ifndef CPP_ENDIAN_DEFAULT_SPEC#define CPP_ENDIAN_DEFAULT_SPEC ""#endif#ifndef CPP_SYSV_DEFAULT_SPEC#define CPP_SYSV_DEFAULT_SPEC ""#endif/* Common ASM definitions used by ASM_SPEC among the various targets   for handling -mcpu=xxx switches.  */#define ASM_CPU_SPEC \"%{!mcpu*: \  %{mpower: %{!mpower2: -mpwr}} \  %{mpower2: -mpwrx} \  %{mpowerpc*: -mppc} \  %{mno-power: %{!mpowerpc*: -mcom}} \  %{!mno-power: %{!mpower2: %(asm_default)}}} \%{mcpu=common: -mcom} \%{mcpu=power: -mpwr} \%{mcpu=power2: -mpwrx} \%{mcpu=powerpc: -mppc} \%{mcpu=rios: -mpwr} \%{mcpu=rios1: -mpwr} \%{mcpu=rios2: -mpwrx} \%{mcpu=rsc: -mpwr} \%{mcpu=rsc1: -mpwr} \%{mcpu=401: -mppc} \%{mcpu=403: -mppc} \%{mcpu=505: -mppc} \%{mcpu=601: -m601} \%{mcpu=602: -mppc} \%{mcpu=603: -mppc} \%{mcpu=603e: -mppc} \%{mcpu=ec603e: -mppc} \%{mcpu=604: -mppc} \%{mcpu=604e: -mppc} \%{mcpu=620: -mppc} \%{mcpu=740: -mppc} \%{mcpu=750: -mppc} \%{mcpu=801: -mppc} \%{mcpu=821: -mppc} \%{mcpu=823: -mppc} \%{mcpu=860: -mppc}"#ifndef ASM_DEFAULT_SPEC#define ASM_DEFAULT_SPEC ""#endif/* 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 GNU CC driver   program.   Do not define this macro if it does not need to do anything.  */#ifndef SUBTARGET_EXTRA_SPECS#define SUBTARGET_EXTRA_SPECS#endif#define EXTRA_SPECS							\  { "cpp_cpu",			CPP_CPU_SPEC },				\  { "cpp_default",		CPP_DEFAULT_SPEC },			\  { "cpp_sysv",			CPP_SYSV_SPEC },			\  { "cpp_sysv_default",		CPP_SYSV_DEFAULT_SPEC },		\  { "cpp_endian_default",	CPP_ENDIAN_DEFAULT_SPEC },		\  { "cpp_endian",		CPP_ENDIAN_SPEC },			\  { "asm_cpu",			ASM_CPU_SPEC },				\  { "asm_default",		ASM_DEFAULT_SPEC },			\  { "link_syscalls",		LINK_SYSCALLS_SPEC },			\  { "link_libg",		LINK_LIBG_SPEC },			\  SUBTARGET_EXTRA_SPECS/* Default location of syscalls.exp under AIX */#ifndef CROSS_COMPILE#define LINK_SYSCALLS_SPEC "-bI:/lib/syscalls.exp"#else#define LINK_SYSCALLS_SPEC ""#endif/* Default location of libg.exp under AIX */#ifndef CROSS_COMPILE#define LINK_LIBG_SPEC "-bexport:/usr/lib/libg.exp"#else#define LINK_LIBG_SPEC ""#endif/* Define the options for the binder: Start text at 512, align all segments   to 512 bytes, and warn if there is text relocation.   The -bhalt:4 option supposedly changes the level at which ld will abort,   but it also suppresses warnings about multiply defined symbols and is   used by the AIX cc command.  So we use it here.   -bnodelcsect undoes a poor choice of default relating to multiply-defined   csects.  See AIX documentation for more information about this.   -bM:SRE tells the linker that the output file is Shared REusable.  Note   that to actually build a shared library you will also need to specify an   export list with the -Wl,-bE option.  */#define LINK_SPEC "-T512 -H512 %{!r:-btextro} -bhalt:4 -bnodelcsect\   %{static:-bnso %(link_syscalls) } \   %{!shared:%{g*: %(link_libg) }} %{shared:-bM:SRE}"/* Profiled library versions are used by linking with special directories.  */#define LIB_SPEC "%{pg:-L/lib/profiled -L/usr/lib/profiled}\   %{p:-L/lib/profiled -L/usr/lib/profiled} %{!shared:%{g*:-lg}} -lc"/* gcc must do the search itself to find libgcc.a, not use -l.  */#define LIBGCC_SPEC "libgcc.a%s"/* Don't turn -B into -L if the argument specifies a relative file name.  */#define RELATIVE_PREFIX_NOT_LINKDIR/* Architecture type.  */extern int target_flags;/* Use POWER architecture instructions and MQ register.  */#define MASK_POWER		0x00000001/* Use POWER2 extensions to POWER architecture.  */#define MASK_POWER2		0x00000002/* Use PowerPC architecture instructions.  */#define MASK_POWERPC		0x00000004/* Use PowerPC General Purpose group optional instructions, e.g. fsqrt.  */#define MASK_PPC_GPOPT		0x00000008/* Use PowerPC Graphics group optional instructions, e.g. fsel.  */#define MASK_PPC_GFXOPT		0x00000010/* Use PowerPC-64 architecture instructions.  */#define MASK_POWERPC64		0x00000020/* Use revised mnemonic names defined for PowerPC architecture.  */#define MASK_NEW_MNEMONICS	0x00000040/* Disable placing fp constants in the TOC; can be turned on when the   TOC overflows.  */#define MASK_NO_FP_IN_TOC	0x00000080/* Disable placing symbol+offset constants in the TOC; can be turned on when   the TOC overflows.  */#define MASK_NO_SUM_IN_TOC	0x00000100/* Output only one TOC entry per module.  Normally linking fails if   there are more than 16K unique variables/constants in an executable.  With   this option, linking fails only if there are more than 16K modules, or   if there are more than 16K unique variables/constant in a single module.   This is at the cost of having 2 extra loads and one extra store per   function, and one less allocable register.  */#define MASK_MINIMAL_TOC	0x00000200/* Nonzero for the 64bit model: ints, longs, and pointers are 64 bits.  */#define MASK_64BIT		0x00000400/* Disable use of FPRs.  */#define MASK_SOFT_FLOAT		0x00000800/* Enable load/store multiple, even on powerpc */#define	MASK_MULTIPLE		0x00001000#define	MASK_MULTIPLE_SET	0x00002000/* Use string instructions for block moves */#define MASK_STRING		0x00004000#define MASK_STRING_SET		0x00008000/* Disable update form of load/store */#define MASK_NO_UPDATE		0x00010000/* Disable fused multiply/add operations */#define MASK_NO_FUSED_MADD	0x00020000#define TARGET_POWER		(target_flags & MASK_POWER)#define TARGET_POWER2		(target_flags & MASK_POWER2)#define TARGET_POWERPC		(target_flags & MASK_POWERPC)#define TARGET_PPC_GPOPT	(target_flags & MASK_PPC_GPOPT)#define TARGET_PPC_GFXOPT	(target_flags & MASK_PPC_GFXOPT)#define TARGET_POWERPC64	(target_flags & MASK_POWERPC64)#define TARGET_NEW_MNEMONICS	(target_flags & MASK_NEW_MNEMONICS)#define TARGET_NO_FP_IN_TOC	(target_flags & MASK_NO_FP_IN_TOC)#define TARGET_NO_SUM_IN_TOC	(target_flags & MASK_NO_SUM_IN_TOC)#define TARGET_MINIMAL_TOC	(target_flags & MASK_MINIMAL_TOC)#define TARGET_64BIT		(target_flags & MASK_64BIT)#define TARGET_SOFT_FLOAT	(target_flags & MASK_SOFT_FLOAT)#define	TARGET_MULTIPLE		(target_flags & MASK_MULTIPLE)#define	TARGET_MULTIPLE_SET	(target_flags & MASK_MULTIPLE_SET)#define TARGET_STRING		(target_flags & MASK_STRING)#define TARGET_STRING_SET	(target_flags & MASK_STRING_SET)#define TARGET_NO_UPDATE	(target_flags & MASK_NO_UPDATE)#define TARGET_NO_FUSED_MADD	(target_flags & MASK_NO_FUSED_MADD)#define TARGET_32BIT		(! TARGET_64BIT)#define TARGET_HARD_FLOAT	(! TARGET_SOFT_FLOAT)#define TARGET_UPDATE		(! TARGET_NO_UPDATE)#define TARGET_FUSED_MADD	(! TARGET_NO_FUSED_MADD)/* Pseudo target to indicate whether the object format is ELF   (to get around not having conditional compilation in the md file)  */#ifndef	TARGET_ELF#define	TARGET_ELF		0#endif/* If this isn't V.4, don't support -mno-toc.  */#ifndef TARGET_NO_TOC#define TARGET_NO_TOC		0#define	TARGET_TOC		1#endif/* Pseudo target to say whether this is Windows NT */#ifndef	TARGET_WINDOWS_NT#define	TARGET_WINDOWS_NT 0#endif/* Pseudo target to say whether this is MAC */#ifndef	TARGET_MACOS#define	TARGET_MACOS 0#endif/* Pseudo target to say whether this is AIX */#ifndef TARGET_AIX#if (TARGET_ELF || TARGET_WINDOWS_NT || TARGET_MACOS)#define TARGET_AIX 0#else#define TARGET_AIX 1#endif#endif#ifndef TARGET_XL_CALL#define TARGET_XL_CALL 0#endif/* Run-time compilation parameters selecting different hardware subsets.   Macro to define tables used to set the flags.

⌨️ 快捷键说明

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