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

📄 m88k.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 5 页
字号:
/* Definitions of target machine for GNU compiler.   Motorola m88100 in an 88open OCS/BCS environment.   Copyright (C) 1988, 1989, 1990, 1991 Free Software Foundation, Inc.   Contributed by Michael Tiemann (tiemann@mcc.com)   Enhanced by Michael Meissner (meissner@osf.org)   Currently supported by Tom Wood (wood@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, 675 Mass Ave, Cambridge, MA 02139, 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 m88k*.h files include this one and override certain items.   At present, these are m88kv3.h, m88kv4.h, m88kdgux.h, and m88kluna.h.   Additionally, m88kv4.h and m88kdgux.h include svr4.h first.  All other   m88k targets except m88kluna.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};/* External variables/functions defined in m88k.c.  */extern char *m88k_pound_sign;extern char *m88k_short_data;extern char *m88k_version;extern char m88k_volatile_code;extern int 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 int m88k_version_0300;extern struct rtx_def *m88k_compare_reg;extern struct rtx_def *m88k_compare_op0;extern struct rtx_def *m88k_compare_op1;extern enum attr_cpu m88k_cpu;extern int null_prologue ();extern int integer_ok_for_set ();extern int m88k_debugger_offset ();extern void emit_bcnd ();extern void expand_block_move ();extern void m88k_layout_frame ();extern void m88k_expand_prologue ();extern void m88k_begin_prologue ();extern void m88k_end_prologue ();extern void m88k_expand_epilogue ();extern void m88k_begin_epilogue ();extern void m88k_end_epilogue ();extern void output_function_profiler ();extern void output_function_block_profiler ();extern void output_block_profiler ();extern void output_file_start ();extern void output_ascii ();extern void output_label ();extern void print_operand ();extern void print_operand_address ();extern char *output_load_const_int ();extern char *output_load_const_float ();extern char *output_load_const_double ();extern char *output_load_const_dimode ();extern char *output_and ();extern char *output_ior ();extern char *output_xor ();extern char *output_call ();extern struct rtx_def *emit_test ();extern struct rtx_def *legitimize_address ();extern struct rtx_def *legitimize_operand ();extern struct rtx_def *m88k_function_arg ();extern struct rtx_def *m88k_builtin_saveregs ();extern enum m88k_instruction classify_integer ();/* 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 current_function_pretend_args_size;	/* args size without ... */extern int flag_delayed_branch;			/* -fdelayed-branch */extern int flag_pic;				/* -fpic */extern char * reg_names[];/* 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' ***//* Some machines may desire to change what optimizations are performed for   various optimization levels.   This macro, if defined, is executed once   just after the optimization level is determined and before the remainder   of the command options have been parsed.  Values set in this macro are   used as the default values for the other command line options.   LEVEL is the optimization level specified; 2 if -O2 is specified,   1 if -O is specified, and 0 if neither is specified.  *//* This macro used to store 0 in flag_signed_bitfields.   Not only is that misuse of this macro; the whole idea is wrong.   The GNU C dialect makes bitfields signed by default,   regardless of machine type.  Making any machine inconsistent in this   regard is bad for portability.   I chose to make bitfields signed by default because this is consistent   with the way ordinary variables are handled: `int' equals `signed int'.   If there is a good reason to prefer making bitfields unsigned by default,   it cannot have anything to do with the choice of machine.   If the reason is good enough, we should change the convention for all machines.   -- rms, 20 July 1991.  */#define OPTIMIZATION_OPTIONS(LEVEL)			\  do {							\    if (LEVEL)						\      {							\	flag_omit_frame_pointer = 1;			\      }							\  } while (0)/* 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 m88kdgux.h.  *//*** Run-time Target Specification ***//* Names to predefine in the preprocessor for this target machine.   Redefined in m88kv3.h, m88kv4.h, m88kdgux.h, and m88kluna.h.  */#define CPP_PREDEFINES "-Dm88000 -Dm88k -Dunix -D__CLASSIFY_TYPE__=2"#define TARGET_VERSION fprintf (stderr, " (%s%s)", \				VERSION_INFO1, VERSION_INFO2)/* Print subsidiary information on the compiler version in use.   Redefined in m88kv4.h, and m88kluna.h.  */#define VERSION_INFO1	"88open OCS/BCS, "#define VERSION_INFO2	"10/21/92"#define VERSION_STRING	version_string#define	TM_SCCS_ID	"@(#)m88k.h	2.2.14.1 10/21/92 23:03:03"/* 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_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_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_SERIALIZE_VOLATILE 0x00008000 /* Serialize volatile refs */#define MASK_NO_SERIALIZE_VOLATILE 0x00010000 /* Don't serialize */#define MASK_88000 (MASK_88100 | MASK_88110)#define MASK_EITHER_LARGE_SHIFT	(MASK_TRAP_LARGE_SHIFT | \				 MASK_HANDLE_LARGE_SHIFT)#define MASK_SERIALIZE (MASK_SERIALIZE_VOLATILE | MASK_NO_SERIALIZE_VOLATILE)#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_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_SERIALIZE_VOLATILE)#define TARGET_EITHER_LARGE_SHIFT (target_flags & MASK_EITHER_LARGE_SHIFT)/*  Redefined in m88kv3.h,m88kv4.h, and m88kdgux.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 }, \    { "serialize-volatile",		 MASK_SERIALIZE_VOLATILE }, \    { "no-serialize-volatile",		 MASK_NO_SERIALIZE_VOLATILE }, \    SUBTARGET_SWITCHES \    /* Default switches */ \    { "",				 TARGET_DEFAULT }, \  }/* Redefined in m88kdgux.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)				     \

⌨️ 快捷键说明

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