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

📄 m88k.h

📁 linux下的gcc编译器
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine for GNU compiler for   Motorola m88100 in an 88open OCS/BCS environment.   Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,   2001, 2002 Free Software Foundation, Inc.   Contributed by Michael Tiemann (tiemann@cygnus.com).   Currently maintained by (gcc@dg-rtp.dg.com)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.  *//* The m88100 port of GNU CC adheres to the various standards from 88open.   These documents are available by writing:	88open Consortium Ltd.	100 Homeland Court, Suite 800	San Jose, CA  95112	(408) 436-6600   In brief, the current standards are:   Binary Compatibility Standard, Release 1.1A, May 1991	This provides for portability of application-level software at the	executable level for AT&T System V Release 3.2.   Object Compatibility Standard, Release 1.1A, May 1991	This provides for portability of application-level software at the	object file and library level for C, Fortran, and Cobol, and again,	largely for SVR3.   Under development are standards for AT&T System V Release 4, based on the   [generic] System V Application Binary Interface from AT&T.  These include:   System V Application Binary Interface, Motorola 88000 Processor Supplement	Another document from AT&T for SVR4 specific to the m88100.	Available from Prentice Hall.   System V Application Binary Interface, Motorola 88000 Processor Supplement,   Release 1.1, Draft H, May 6, 1991	A proposed update to the AT&T document from 88open.   System V ABI Implementation Guide for the M88000 Processor,   Release 1.0, January 1991	A companion ABI document from 88open.  *//* Other *.h files in config/m88k include this one and override certain items.   Currently these are sysv3.h, sysv4.h, dgux.h, dolph.h, tekXD88.h, and luna.h.   Additionally, sysv4.h and dgux.h include svr4.h first.  All other   m88k targets except luna.h are based on svr3.h.  *//* Choose SVR3 as the default.  */#if !defined(DBX_DEBUGGING_INFO) && !defined(DWARF_DEBUGGING_INFO)#include "svr3.h"#endif/* External types used.  *//* What instructions are needed to manufacture an integer constant.  */enum m88k_instruction {  m88k_zero,  m88k_or,  m88k_subu,  m88k_or_lo16,  m88k_or_lo8,  m88k_set,  m88k_oru_hi16,  m88k_oru_or};/* Which processor to schedule for.  The elements of the enumeration   must match exactly the cpu attribute in the m88k.md machine description. */enum processor_type {  PROCESSOR_M88100,  PROCESSOR_M88110,  PROCESSOR_M88000};/* Recast the cpu class to be the cpu attribute.  */#define m88k_cpu_attr ((enum attr_cpu)m88k_cpu)/* External variables/functions defined in m88k.c.  */extern const char *m88k_pound_sign;extern const char *m88k_short_data;extern const char *m88k_version;extern char m88k_volatile_code;extern unsigned m88k_gp_threshold;extern int m88k_prologue_done;extern int m88k_function_number;extern int m88k_fp_offset;extern int m88k_stack_size;extern int m88k_case_index;extern struct rtx_def *m88k_compare_reg;extern struct rtx_def *m88k_compare_op0;extern struct rtx_def *m88k_compare_op1;extern enum processor_type m88k_cpu;/* external variables defined elsewhere in the compiler */extern int target_flags;			/* -m compiler switches */extern int frame_pointer_needed;		/* current function has a FP */extern int flag_delayed_branch;			/* -fdelayed-branch */extern int flag_pic;				/* -fpic *//* Specify the default monitors.  The meaning of these values can   be obtained by doing "grep MONITOR_GCC *m88k*".  Generally, the   values downward from 0x8000 are tests that will soon go away.   values upward from 0x1 are generally useful tests that will remain.  */#ifndef MONITOR_GCC#define MONITOR_GCC 0#endif/*** Controlling the Compilation Driver, `gcc' ***//* Show we can debug even without a frame pointer.  */#define CAN_DEBUG_WITHOUT_FP/* If -m88100 is in effect, add -D__m88100__; similarly for -m88110.   Here, the CPU_DEFAULT is assumed to be -m88100.  */#undef	CPP_SPEC#define	CPP_SPEC "%{!m88000:%{!m88100:%{m88110:-D__m88110__}}} \		  %{!m88000:%{!m88110:-D__m88100__}}"/* LIB_SPEC, LINK_SPEC, and STARTFILE_SPEC defined in svr3.h.   ASM_SPEC, ASM_FINAL_SPEC, LIB_SPEC, LINK_SPEC, and STARTFILE_SPEC redefined   in svr4.h.   CPP_SPEC, ASM_SPEC, ASM_FINAL_SPEC, LIB_SPEC, LINK_SPEC, and   STARTFILE_SPEC redefined in dgux.h.  *//*** Run-time Target Specification ***//* Names to predefine in the preprocessor for this target machine.   Redefined in sysv3.h, sysv4.h, dgux.h, and luna.h.  */#define CPP_PREDEFINES "-Dm88000 -Dm88k -Dunix -D__CLASSIFY_TYPE__=2"#define TARGET_VERSION fprintf (stderr, " (%s)", VERSION_INFO1)#ifndef VERSION_INFO1#define VERSION_INFO1	"m88k"#endif/* Run-time compilation parameters selecting different hardware subsets.  *//* 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 MASK_88100		0x00000001 /* Target m88100 */#define MASK_88110		0x00000002 /* Target m88110 */#define MASK_88000 		(MASK_88100 | MASK_88110)#define MASK_OCS_DEBUG_INFO	0x00000004 /* Emit .tdesc info */#define MASK_OCS_FRAME_POSITION	0x00000008 /* Debug frame = CFA, not r30 */#define MASK_SVR4		0x00000010 /* Target is AT&T System V.4 */#define MASK_SVR3		0x00000020 /* Target is AT&T System V.3 */#define MASK_NO_UNDERSCORES	0x00000040 /* Don't emit a leading `_' */#define MASK_BIG_PIC		0x00000080 /* PIC with large got-rel's -fPIC */#define MASK_TRAP_LARGE_SHIFT	0x00000100 /* Trap if shift not <= 31 */#define MASK_HANDLE_LARGE_SHIFT	0x00000200 /* Handle shift count >= 32 */#define MASK_CHECK_ZERO_DIV	0x00000400 /* Check for int div. by 0 */#define MASK_USE_DIV		0x00000800 /* No signed div. checks */#define MASK_IDENTIFY_REVISION	0x00001000 /* Emit ident, with GCC rev */#define MASK_WARN_PASS_STRUCT	0x00002000 /* Warn about passed structs */#define MASK_OPTIMIZE_ARG_AREA	0x00004000 /* Save stack space */#define MASK_NO_SERIALIZE_VOLATILE 0x00008000 /* Serialize volatile refs */#define MASK_EITHER_LARGE_SHIFT	(MASK_TRAP_LARGE_SHIFT | \				 MASK_HANDLE_LARGE_SHIFT)#define MASK_OMIT_LEAF_FRAME_POINTER 0x00020000 /* omit leaf frame pointers */#define TARGET_88100   		 ((target_flags & MASK_88000) == MASK_88100)#define TARGET_88110		 ((target_flags & MASK_88000) == MASK_88110)#define TARGET_88000		 ((target_flags & MASK_88000) == MASK_88000)#define TARGET_OCS_DEBUG_INFO	  (target_flags & MASK_OCS_DEBUG_INFO)#define TARGET_OCS_FRAME_POSITION (target_flags & MASK_OCS_FRAME_POSITION)#define TARGET_SVR4		  (target_flags & MASK_SVR4)#define TARGET_SVR3		  (target_flags & MASK_SVR3)#define TARGET_NO_UNDERSCORES	  (target_flags & MASK_NO_UNDERSCORES)#define TARGET_BIG_PIC		  (target_flags & MASK_BIG_PIC)#define TARGET_TRAP_LARGE_SHIFT   (target_flags & MASK_TRAP_LARGE_SHIFT)#define TARGET_HANDLE_LARGE_SHIFT (target_flags & MASK_HANDLE_LARGE_SHIFT)#define TARGET_CHECK_ZERO_DIV	  (target_flags & MASK_CHECK_ZERO_DIV)#define	TARGET_USE_DIV		  (target_flags & MASK_USE_DIV)#define TARGET_IDENTIFY_REVISION  (target_flags & MASK_IDENTIFY_REVISION)#define TARGET_WARN_PASS_STRUCT   (target_flags & MASK_WARN_PASS_STRUCT)#define TARGET_OPTIMIZE_ARG_AREA  (target_flags & MASK_OPTIMIZE_ARG_AREA)#define TARGET_SERIALIZE_VOLATILE (!(target_flags & MASK_NO_SERIALIZE_VOLATILE))#define TARGET_EITHER_LARGE_SHIFT (target_flags & MASK_EITHER_LARGE_SHIFT)#define TARGET_OMIT_LEAF_FRAME_POINTER (target_flags & MASK_OMIT_LEAF_FRAME_POINTER)/*  Redefined in sysv3.h, sysv4.h, and dgux.h.  */#define TARGET_DEFAULT	(MASK_CHECK_ZERO_DIV)#define CPU_DEFAULT MASK_88100#define TARGET_SWITCHES \  { \    { "88110",				 MASK_88110 }, \    { "88100",				 MASK_88100 }, \    { "88000",			         MASK_88000 }, \    { "ocs-debug-info",			 MASK_OCS_DEBUG_INFO }, \    { "no-ocs-debug-info",		-MASK_OCS_DEBUG_INFO }, \    { "ocs-frame-position",		 MASK_OCS_FRAME_POSITION }, \    { "no-ocs-frame-position",		-MASK_OCS_FRAME_POSITION }, \    { "svr4",			         MASK_SVR4 }, \    { "svr3",			        -MASK_SVR4 }, \    { "no-underscores",			 MASK_NO_UNDERSCORES }, \    { "big-pic",			 MASK_BIG_PIC }, \    { "trap-large-shift",		 MASK_TRAP_LARGE_SHIFT }, \    { "handle-large-shift",		 MASK_HANDLE_LARGE_SHIFT }, \    { "check-zero-division",		 MASK_CHECK_ZERO_DIV }, \    { "no-check-zero-division",		-MASK_CHECK_ZERO_DIV }, \    { "use-div-instruction",		 MASK_USE_DIV }, \    { "identify-revision",		 MASK_IDENTIFY_REVISION }, \    { "warn-passed-structs",		 MASK_WARN_PASS_STRUCT }, \    { "optimize-arg-area",		 MASK_OPTIMIZE_ARG_AREA }, \    { "no-optimize-arg-area",		-MASK_OPTIMIZE_ARG_AREA }, \    { "no-serialize-volatile",		 MASK_NO_SERIALIZE_VOLATILE }, \    { "serialize-volatile",		-MASK_NO_SERIALIZE_VOLATILE }, \    { "omit-leaf-frame-pointer",	 MASK_OMIT_LEAF_FRAME_POINTER }, \    { "no-omit-leaf-frame-pointer",     -MASK_OMIT_LEAF_FRAME_POINTER }, \    SUBTARGET_SWITCHES \    /* Default switches */ \    { "",				 TARGET_DEFAULT }, \  }/* Redefined in dgux.h.  */#define SUBTARGET_SWITCHES/* Macro to define table for command options with values.  */#define TARGET_OPTIONS { { "short-data-", &m88k_short_data }, \			 { "version-", &m88k_version } }/* Do any checking or such that is needed after processing the -m switches.  */#define OVERRIDE_OPTIONS						     \  do {									     \    register int i;							     \									     \    if ((target_flags & MASK_88000) == 0)				     \      target_flags |= CPU_DEFAULT;					     \									     \    if (TARGET_88110)							     \      {									     \        target_flags |= MASK_USE_DIV;					     \        target_flags &= ~MASK_CHECK_ZERO_DIV;				     \      }									     \      									     \    m88k_cpu = (TARGET_88000 ? PROCESSOR_M88000				     \		: (TARGET_88100 ? PROCESSOR_M88100 : PROCESSOR_M88110));		     \									     \    if (TARGET_BIG_PIC)							     \      flag_pic = 2;							     \									     \    if ((target_flags & MASK_EITHER_LARGE_SHIFT) == MASK_EITHER_LARGE_SHIFT) \      error ("-mtrap-large-shift and -mhandle-large-shift are incompatible");\									     \    if (TARGET_SVR4)						     	     \      {									     \	for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)			     \	  reg_names[i]--;						     \	m88k_pound_sign = "#";						     \      }									     \    else								     \      {									     \	target_flags |= MASK_SVR3;					     \	target_flags &= ~MASK_SVR4;					     \      }									     \									     \    if (m88k_short_data)						     \      {									     \	const char *p = m88k_short_data;				     \	while (*p)							     \	  if (ISDIGIT (*p))						     \	    p++;							     \	  else								     \	    {								     \	      error ("invalid option `-mshort-data-%s'", m88k_short_data);   \	      break;							     \	    }								     \	m88k_gp_threshold = atoi (m88k_short_data);			     \	if (m88k_gp_threshold > 0x7fffffff)				     \	  error ("-mshort-data-%s is too large ", m88k_short_data);          \	if (flag_pic)							     \	  error ("-mshort-data-%s and PIC are incompatible", m88k_short_data); \      }									     \    if (TARGET_OMIT_LEAF_FRAME_POINTER)       /* keep nonleaf frame pointers */    \      flag_omit_frame_pointer = 1;                                         \  } while (0)/*** Storage Layout ***//* Sizes in bits of the various types.  */#define SHORT_TYPE_SIZE		16#define INT_TYPE_SIZE		32#define LONG_TYPE_SIZE		32#define LONG_LONG_TYPE_SIZE	64#define FLOAT_TYPE_SIZE		32#define	DOUBLE_TYPE_SIZE	64

⌨️ 快捷键说明

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