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

📄 pa.h

📁 linux下的gcc编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine for GNU compiler, for the HP Spectrum.   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,   2001, 2002 Free Software Foundation, Inc.   Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support   and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for   Software Science at the University of Utah.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.  */enum cmp_type				/* comparison type */{  CMP_SI,				/* compare integers */  CMP_SF,				/* compare single precision floats */  CMP_DF,				/* compare double precision floats */  CMP_MAX				/* max comparison type */};/* For long call handling.  */extern unsigned long total_code_bytes;/* Which processor to schedule for.  */enum processor_type{  PROCESSOR_700,  PROCESSOR_7100,  PROCESSOR_7100LC,  PROCESSOR_7200,  PROCESSOR_7300,  PROCESSOR_8000};/* For -mschedule= option.  */extern const char *pa_cpu_string;extern enum processor_type pa_cpu;#define pa_cpu_attr ((enum attr_cpu)pa_cpu)/* Which architecture to generate code for.  */enum architecture_type{  ARCHITECTURE_10,  ARCHITECTURE_11,  ARCHITECTURE_20};struct rtx_def;/* For -march= option.  */extern const char *pa_arch_string;extern enum architecture_type pa_arch;/* Print subsidiary information on the compiler version in use.  */#define TARGET_VERSION fputs (" (hppa)", stderr);/* Run-time compilation parameters selecting different hardware subsets.  */extern int target_flags;/* compile code for HP-PA 1.1 ("Snake").  */#define MASK_PA_11 1/* Disable all FP registers (they all become fixed).  This may be necessary   for compiling kernels which perform lazy context switching of FP regs.   Note if you use this option and try to perform floating point operations   the compiler will abort!  */#define MASK_DISABLE_FPREGS 2#define TARGET_DISABLE_FPREGS (target_flags & MASK_DISABLE_FPREGS)/* Generate code which assumes that all space register are equivalent.   Triggers aggressive unscaled index addressing and faster   builtin_return_address.  */#define MASK_NO_SPACE_REGS 4#define TARGET_NO_SPACE_REGS (target_flags & MASK_NO_SPACE_REGS)/* Allow unconditional jumps in the delay slots of call instructions.  */#define MASK_JUMP_IN_DELAY 8#define TARGET_JUMP_IN_DELAY (target_flags & MASK_JUMP_IN_DELAY)/* Disable indexed addressing modes.  */#define MASK_DISABLE_INDEXING 32#define TARGET_DISABLE_INDEXING (target_flags & MASK_DISABLE_INDEXING)/* Emit code which follows the new portable runtime calling conventions   HP wants everyone to use for ELF objects.  If at all possible you want   to avoid this since it's a performance loss for non-prototyped code.   Note TARGET_PORTABLE_RUNTIME also forces all calls to use inline   long-call stubs which is quite expensive.  */#define MASK_PORTABLE_RUNTIME 64#define TARGET_PORTABLE_RUNTIME (target_flags & MASK_PORTABLE_RUNTIME)/* Emit directives only understood by GAS.  This allows parameter   relocations to work for static functions.  There is no way   to make them work the HP assembler at this time.  */#define MASK_GAS 128#define TARGET_GAS (target_flags & MASK_GAS)/* Emit code for processors which do not have an FPU.  */#define MASK_SOFT_FLOAT 256#define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT)/* Use 3-insn load/store sequences for access to large data segments   in shared libraries on hpux10.  */#define MASK_LONG_LOAD_STORE 512#define TARGET_LONG_LOAD_STORE (target_flags & MASK_LONG_LOAD_STORE)/* Use a faster sequence for indirect calls.  This assumes that calls   through function pointers will never cross a space boundary, and   that the executable is not dynamically linked.  Such assumptions   are generally safe for building kernels and statically linked   executables.  Code compiled with this option will fail miserably if   the executable is dynamically linked or uses nested functions!  */#define MASK_FAST_INDIRECT_CALLS 1024#define TARGET_FAST_INDIRECT_CALLS (target_flags & MASK_FAST_INDIRECT_CALLS)/* Generate code with big switch statements to avoid out of range branches   occurring within the switch table.  */#define MASK_BIG_SWITCH 2048#define TARGET_BIG_SWITCH (target_flags & MASK_BIG_SWITCH)/* Generate code for the HPPA 2.0 architecture.  TARGET_PA_11 should also be   true when this is true.  */#define MASK_PA_20 4096/* Generate cpp defines for server I/O.  */#define MASK_SIO 8192#define TARGET_SIO (target_flags & MASK_SIO)/* Assume GNU linker by default.  */#define MASK_GNU_LD 16384#ifndef TARGET_GNU_LD#define TARGET_GNU_LD (target_flags & MASK_GNU_LD)#endif/* Force generation of long calls.  */#define MASK_LONG_CALLS 32768#ifndef TARGET_LONG_CALLS#define TARGET_LONG_CALLS (target_flags & MASK_LONG_CALLS)#endif#ifndef TARGET_PA_10#define TARGET_PA_10 (target_flags & (MASK_PA_11 | MASK_PA_20) == 0)#endif#ifndef TARGET_PA_11#define TARGET_PA_11 (target_flags & MASK_PA_11)#endif#ifndef TARGET_PA_20#define TARGET_PA_20 (target_flags & MASK_PA_20)#endif/* Generate code for the HPPA 2.0 architecture in 64bit mode.  */#ifndef TARGET_64BIT#define TARGET_64BIT 0#endif/* Generate code for ELF32 ABI.  */#ifndef TARGET_ELF32#define TARGET_ELF32 0#endif/* Generate code for SOM 32bit ABI.  */#ifndef TARGET_SOM#define TARGET_SOM 0#endif/* The following three defines are potential target switches.  The current   defines are optimal given the current capabilities of GAS and GNU ld.  *//* Define to a C expression evaluating to true to use long absolute calls.   Currently, only the HP assembler and SOM linker support long absolute   calls.  They are used only in non-pic code.  */#define TARGET_LONG_ABS_CALL (TARGET_SOM && !TARGET_GAS)/* Define to a C expression evaluating to true to use long pic symbol   difference calls.  This is a call variant similar to the long pic   pc-relative call.  Long pic symbol difference calls are only used with   the HP SOM linker.  Currently, only the HP assembler supports these   calls.  GAS doesn't allow an arbritrary difference of two symbols.  */#define TARGET_LONG_PIC_SDIFF_CALL (!TARGET_GAS)/* Define to a C expression evaluating to true to use long pic   pc-relative calls.  Long pic pc-relative calls are only used with   GAS.  Currently, they are usable for calls within a module but   not for external calls.  */#define TARGET_LONG_PIC_PCREL_CALL 0/* Define to a C expression evaluating to true to use SOM secondary   definition symbols for weak support.  Linker support for secondary   definition symbols is buggy prior to HP-UX 11.X.  */#define TARGET_SOM_SDEF 0/* Define to a C expression evaluating to true to save the entry value   of SP in the current frame marker.  This is normally unnecessary.   However, the HP-UX unwind library looks at the SAVE_SP callinfo flag.   HP compilers don't use this flag but it is supported by the assembler.   We set this flag to indicate that register %r3 has been saved at the   start of the frame.  Thus, when the HP unwind library is used, we   need to generate additional code to save SP into the frame marker.  */#define TARGET_HPUX_UNWIND_LIBRARY 0/* Macro to define tables used to set the flags.  This is a   list in braces of target switches with each switch being   { "NAME", VALUE, "HELP_STRING" }.  VALUE is the bits to set,   or minus the bits to clear.  An empty string NAME is used to   identify the default VALUE.  Do not mark empty strings for   translation.  */#define TARGET_SWITCHES \  {{ "snake",			 MASK_PA_11,				\     N_("Generate PA1.1 code") },					\   { "nosnake",			-(MASK_PA_11 | MASK_PA_20),		\     N_("Generate PA1.0 code") },					\   { "pa-risc-1-0",		-(MASK_PA_11 | MASK_PA_20),		\     N_("Generate PA1.0 code") },					\   { "pa-risc-1-1",		 MASK_PA_11,				\     N_("Generate PA1.1 code") },					\   { "pa-risc-2-0",		 MASK_PA_20,				\     N_("Generate PA2.0 code (requires binutils 2.10 or later)") },	\   { "disable-fpregs",		 MASK_DISABLE_FPREGS,			\     N_("Disable FP regs") },						\   { "no-disable-fpregs",	-MASK_DISABLE_FPREGS,			\     N_("Do not disable FP regs") },					\   { "no-space-regs",		 MASK_NO_SPACE_REGS,			\     N_("Disable space regs") },					\   { "space-regs",		-MASK_NO_SPACE_REGS,			\     N_("Do not disable space regs") },					\   { "jump-in-delay",		 MASK_JUMP_IN_DELAY,			\     N_("Put jumps in call delay slots") },				\   { "no-jump-in-delay",	-MASK_JUMP_IN_DELAY,			\     N_("Do not put jumps in call delay slots") },			\   { "disable-indexing",	 MASK_DISABLE_INDEXING,			\     N_("Disable indexed addressing") },				\   { "no-disable-indexing",	-MASK_DISABLE_INDEXING,			\     N_("Do not disable indexed addressing") },				\   { "portable-runtime",	 MASK_PORTABLE_RUNTIME,			\     N_("Use portable calling conventions") },				\   { "no-portable-runtime",	-MASK_PORTABLE_RUNTIME,			\     N_("Do not use portable calling conventions") },			\   { "gas",			 MASK_GAS,				\     N_("Assume code will be assembled by GAS") },			\   { "no-gas",			-MASK_GAS,				\     N_("Do not assume code will be assembled by GAS") },		\   { "soft-float",		 MASK_SOFT_FLOAT,			\     N_("Use software floating point") },				\   { "no-soft-float",		-MASK_SOFT_FLOAT,			\     N_("Do not use software floating point") },			\   { "long-load-store",		 MASK_LONG_LOAD_STORE,			\     N_("Emit long load/store sequences") },				\   { "no-long-load-store",	-MASK_LONG_LOAD_STORE,			\     N_("Do not emit long load/store sequences") },			\   { "fast-indirect-calls",	 MASK_FAST_INDIRECT_CALLS,		\     N_("Generate fast indirect calls") },				\   { "no-fast-indirect-calls",	-MASK_FAST_INDIRECT_CALLS,		\     N_("Do not generate fast indirect calls") },			\   { "big-switch",		 MASK_BIG_SWITCH,			\     N_("Generate code for huge switch statements") },			\   { "no-big-switch",		-MASK_BIG_SWITCH,			\     N_("Do not generate code for huge switch statements") },		\   { "long-calls",		 MASK_LONG_CALLS,			\     N_("Always generate long calls") },				\   { "no-long-calls",		-MASK_LONG_CALLS,			\     N_("Generate long calls only when needed") },			\   { "linker-opt",		 0,					\     N_("Enable linker optimizations") },				\   SUBTARGET_SWITCHES							\   { "",			 TARGET_DEFAULT | TARGET_CPU_DEFAULT,	\     NULL }}#ifndef TARGET_DEFAULT#define TARGET_DEFAULT (MASK_GAS | MASK_JUMP_IN_DELAY)#endif#ifndef TARGET_CPU_DEFAULT#define TARGET_CPU_DEFAULT 0#endif#ifndef SUBTARGET_SWITCHES#define SUBTARGET_SWITCHES#endif#ifndef TARGET_SCHED_DEFAULT#define TARGET_SCHED_DEFAULT "8000"#endif#define TARGET_OPTIONS							\{									\  { "schedule=",		&pa_cpu_string,				\    N_("Specify CPU for scheduling purposes") },			\  { "arch=",			&pa_arch_string,			\    N_("Specify architecture for code generation.  Values are 1.0, 1.1, and 2.0.  2.0 requires gas snapshot 19990413 or later.") }\}/* Specify the dialect of assembler to use.  New mnemonics is dialect one   and the old mnemonics are dialect zero.  */#define ASSEMBLER_DIALECT (TARGET_PA_20 ? 1 : 0)#define OVERRIDE_OPTIONS override_options ()/* stabs-in-som is nearly identical to stabs-in-elf.  To avoid useless   code duplication we simply include this file and override as needed.  */#include "dbxelf.h"/* We do not have to be compatible with dbx, so we enable gdb extensions   by default.  */#define DEFAULT_GDB_EXTENSIONS 1/* This used to be zero (no max length), but big enums and such can   cause huge strings which killed gas.   We also have to avoid lossage in dbxout.c -- it does not compute the   string size accurately, so we are real conservative here.  */#undef DBX_CONTIN_LENGTH#define DBX_CONTIN_LENGTH 3000

⌨️ 快捷键说明

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