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

📄 mt.h

📁 linux下编程用 编译软件
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Target Definitions for MorphoRISC1   Copyright (C) 2005 Free Software Foundation, Inc.   Contributed by Red Hat, Inc.   This file is part of GCC.   GCC is free software; you can redistribute it and/or modify it   under the terms of the GNU General Public License as published   by the Free Software Foundation; either version 2, or (at your   option) any later version.   GCC is distributed in the hope that it will be useful, but WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public   License for more details.   You should have received a copy of the GNU General Public License   along with GCC; see the file COPYING.  If not, write to the Free   Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA   02110-1301, USA.  */extern struct rtx_def * mt_ucmpsi3_libcall;enum processor_type{  PROCESSOR_MS1_64_001,  PROCESSOR_MS1_16_002,  PROCESSOR_MS1_16_003,  PROCESSOR_MS2};enum epilogue_type{  EH_EPILOGUE,  NORMAL_EPILOGUE};extern enum processor_type mt_cpu;/* A C string constant that tells the GCC driver program options to pass to   the assembler.  */#undef  ASM_SPEC#define ASM_SPEC "%{march=*} %{!march=*: -march=ms1-16-002}"/* A string to pass to at the end of the command given to the linker.  */#undef  LIB_SPEC#define LIB_SPEC "--start-group -lc -lsim --end-group \%{msim: ; \march=ms1-64-001:-T 64-001.ld%s; \march=ms1-16-002:-T 16-002.ld%s; \march=ms1-16-003:-T 16-003.ld%s; \march=ms2:-T ms2.ld%s; \	 :-T 16-002.ld}"/* A string to pass at the very beginning of the command given to the   linker.  */#undef  STARTFILE_SPEC#define STARTFILE_SPEC "%{msim:crt0.o%s;\march=ms1-64-001:%{!mno-crt0:crt0-64-001.o%s} startup-64-001.o%s; \march=ms1-16-002:%{!mno-crt0:crt0-16-002.o%s} startup-16-002.o%s; \march=ms1-16-003:%{!mno-crt0:crt0-16-003.o%s} startup-16-003.o%s; \march=ms2:%{!mno-crt0:crt0-ms2.o%s} startup-ms2.o%s; \	 :%{!mno-crt0:crt0-16-002.o%s} startup-16-002.o%s} \crti.o%s crtbegin.o%s"/* A string to pass at the end of the command given to the linker.  */#undef  ENDFILE_SPEC#define ENDFILE_SPEC "%{msim:exit.o%s; \march=ms1-64-001:exit-64-001.o%s; \march=ms1-16-002:exit-16-002.o%s; \march=ms1-16-003:exit-16-003.o%s; \march=ms2:exit-ms2.o%s; \	 :exit-16-002.o%s} \ crtend.o%s crtn.o%s"/* Run-time target specifications.  */#define TARGET_CPU_CPP_BUILTINS() 		\  do						\    {						\      builtin_define_with_int_value ("__mt__", mt_cpu);	\      builtin_assert ("machine=mt");		\    }						\  while (0)#define TARGET_MS1_64_001 (mt_cpu == PROCESSOR_MS1_64_001)#define TARGET_MS1_16_002 (mt_cpu == PROCESSOR_MS1_16_002)#define TARGET_MS1_16_003 (mt_cpu == PROCESSOR_MS1_16_003)#define TARGET_MS2 (mt_cpu == PROCESSOR_MS2)#define TARGET_VERSION  fprintf (stderr, " (mt)");#define OVERRIDE_OPTIONS mt_override_options ()#define CAN_DEBUG_WITHOUT_FP 1/* Storage Layout.  */#define BITS_BIG_ENDIAN 0#define BYTES_BIG_ENDIAN 1#define WORDS_BIG_ENDIAN 1#define UNITS_PER_WORD 4/* A macro to update MODE and UNSIGNEDP when an object whose type is TYPE and   which has the specified mode and signedness is to be stored in a register.   This macro is only called when TYPE is a scalar type.   On most RISC machines, which only have operations that operate on a full   register, define this macro to set M to `word_mode' if M is an integer mode   narrower than `BITS_PER_WORD'.  In most cases, only integer modes should be   widened because wider-precision floating-point operations are usually more   expensive than their narrower counterparts.   For most machines, the macro definition does not change UNSIGNEDP.  However,   some machines, have instructions that preferentially handle either signed or   unsigned quantities of certain modes.  For example, on the DEC Alpha, 32-bit   loads from memory and 32-bit add instructions sign-extend the result to 64   bits.  On such machines, set UNSIGNEDP according to which kind of extension   is more efficient.   Do not define this macro if it would never modify MODE.  */#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE)			\  do								\    {								\      if (GET_MODE_CLASS (MODE) == MODE_INT			\	  && GET_MODE_SIZE (MODE) < 4)				\	(MODE) = SImode;					\    }								\  while (0)/* Normal alignment required for function parameters on the stack, in bits.   All stack parameters receive at least this much alignment regardless of data   type.  On most machines, this is the same as the size of an integer.  */#define PARM_BOUNDARY 32/* Define this macro to the minimum alignment enforced by hardware for   the stack pointer on this machine.  The definition is a C   expression for the desired alignment (measured in bits).  This   value is used as a default if PREFERRED_STACK_BOUNDARY is not   defined.  On most machines, this should be the same as   PARM_BOUNDARY.  */#define STACK_BOUNDARY 32/* Alignment required for a function entry point, in bits.  */#define FUNCTION_BOUNDARY 32/* Biggest alignment that any data type can require on this machine,   in bits.  */#define BIGGEST_ALIGNMENT 32/* If defined, a C expression to compute the alignment for a variable   in the static store.  TYPE is the data type, and ALIGN is the   alignment that the object would ordinarily have.  The value of this   macro is used instead of that alignment to align the object.   If this macro is not defined, then ALIGN is used.  */#define DATA_ALIGNMENT(TYPE, ALIGN)		\  (TREE_CODE (TYPE) == ARRAY_TYPE		\   && TYPE_MODE (TREE_TYPE (TYPE)) == QImode	\   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))/* If defined, a C expression to compute the alignment given to a constant that   is being placed in memory.  CONSTANT is the constant and ALIGN is the   alignment that the object would ordinarily have.  The value of this macro is   used instead of that alignment to align the object.   If this macro is not defined, then ALIGN is used.   The typical use of this macro is to increase alignment for string constants   to be word aligned so that `strcpy' calls that copy constants can be done   inline.  */#define CONSTANT_ALIGNMENT(EXP, ALIGN)  \  (TREE_CODE (EXP) == STRING_CST	\   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))/* Number of bits which any structure or union's size must be a multiple of.   Each structure or union's size is rounded up to a multiple of this.   If you do not define this macro, the default is the same as `BITS_PER_UNIT'.  */#define STRUCTURE_SIZE_BOUNDARY 32/* Define this macro to be the value 1 if instructions will fail to work if   given data not on the nominal alignment.  If instructions will merely go   slower in that case, define this macro as 0.  */#define STRICT_ALIGNMENT 1/* Define this if you wish to imitate the way many other C compilers handle   alignment of bitfields and the structures that contain them.  */#define PCC_BITFIELD_TYPE_MATTERS 1/* Layout of Source Language Data Types.  */#define INT_TYPE_SIZE 32#define SHORT_TYPE_SIZE 16#define LONG_TYPE_SIZE 32#define LONG_LONG_TYPE_SIZE 64#define CHAR_TYPE_SIZE 8#define FLOAT_TYPE_SIZE 32#define DOUBLE_TYPE_SIZE 64#define LONG_DOUBLE_TYPE_SIZE 64#define DEFAULT_SIGNED_CHAR 1/* Register Basics.  *//* General purpose registers.  */#define GPR_FIRST       0               /* First gpr */#define GPR_LAST        15		/* Last possible gpr */#define GPR_R0          0		/* Always 0 */#define GPR_R7          7		/* Used as a scratch register */#define GPR_R8          8		/* Used as a scratch register */#define GPR_R9          9		/* Used as a scratch register */#define GPR_R10         10		/* Used as a scratch register */#define GPR_R11         11		/* Used as a scratch register */#define GPR_FP          12		/* Frame pointer */#define GPR_SP          13	        /* Stack pointer */#define GPR_LINK	14		/* Saved return address as					   seen  by the caller */#define GPR_INTERRUPT_LINK 15		/* hold return addres for interrupts *//* Argument register that is eliminated in favor of the frame and/or stack   pointer.  Also add register to point to where the return address is   stored.  */#define SPECIAL_REG_FIRST		(GPR_LAST + 1)#define SPECIAL_REG_LAST		(SPECIAL_REG_FIRST)#define ARG_POINTER_REGNUM		(SPECIAL_REG_FIRST + 0)#define SPECIAL_REG_P(R)		((R) == SPECIAL_REG_FIRST)/* The first/last register that can contain the arguments to a function.  */#define FIRST_ARG_REGNUM	1#define LAST_ARG_REGNUM		4/* The register used to hold functions return value */#define RETVAL_REGNUM		11#define FIRST_PSEUDO_REGISTER (GPR_FIRST + 17)#define IS_PSEUDO_P(R)	(REGNO (R) >= FIRST_PSEUDO_REGISTER)/* R0		always has the value 0   R10          static link   R12	FP	pointer to active frame   R13	SP	pointer to top of stack   R14	RA	return address   R15	IRA	interrupt return address.  */#define FIXED_REGISTERS { 1, 0, 0, 0, 0, 0, 0, 0, \			  0, 0, 0, 0, 1, 1, 1, 1, \			  1			  \			 }/* Like `FIXED_REGISTERS' but has 1 for each register that is clobbered (in   general) by function calls as well as for fixed registers.  This macro   therefore identifies the registers that are not available for general   allocation of values that must live across function calls.  */#define CALL_USED_REGISTERS	{ 1, 1, 1, 1, 1, 0, 0, 1, \				  1, 1, 1, 1, 1, 1, 1, 1, \				  1			  \				}/* How Values Fit in Registers.  */#define HARD_REGNO_NREGS(REGNO, MODE) 				\  ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)#define HARD_REGNO_MODE_OK(REGNO, MODE) 1/* A C expression that is nonzero if a value of mode MODE1 is   accessible in mode MODE2 without copying.  */#define MODES_TIEABLE_P(MODE1, MODE2) 1/* Register Classes.  */enum reg_class{

⌨️ 快捷键说明

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