aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/mt/mt.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/mt/mt.h')
-rw-r--r--gcc/config/mt/mt.h868
1 files changed, 0 insertions, 868 deletions
diff --git a/gcc/config/mt/mt.h b/gcc/config/mt/mt.h
deleted file mode 100644
index b587326..0000000
--- a/gcc/config/mt/mt.h
+++ /dev/null
@@ -1,868 +0,0 @@
-/* Target Definitions for MorphoRISC1
- Copyright (C) 2005, 2006, 2007 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 3, 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 COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-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;
-
-
-/* Support for a compile-time default CPU, et cetera. The rules are:
- --with-arch is ignored if -march is specified. */
-#define OPTION_DEFAULT_SPECS \
- {"arch", "%{!march=*:-march=%(VALUE)}" }
-
-/* 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 */
-
-#define LOOP_FIRST (GPR_LAST + 1)
-#define LOOP_LAST (LOOP_FIRST + 3)
-
-/* 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 (LOOP_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 (SPECIAL_REG_LAST + 1)
-
-#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, 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, 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
-{
- NO_REGS,
- ALL_REGS,
- LIM_REG_CLASSES
-};
-
-#define GENERAL_REGS ALL_REGS
-
-#define N_REG_CLASSES ((int) LIM_REG_CLASSES)
-
-#define REG_CLASS_NAMES {"NO_REGS", "ALL_REGS" }
-
-#define REG_CLASS_CONTENTS \
- { \
- { 0x0 }, \
- { 0x000fffff }, \
- }
-
-/* A C expression whose value is a register class containing hard register
- REGNO. In general there is more than one such class; choose a class which
- is "minimal", meaning that no smaller class also contains the register. */
-#define REGNO_REG_CLASS(REGNO) GENERAL_REGS
-
-#define BASE_REG_CLASS GENERAL_REGS
-
-#define INDEX_REG_CLASS NO_REGS
-
-#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-
-#define REGNO_OK_FOR_BASE_P(NUM) 1
-
-#define REGNO_OK_FOR_INDEX_P(NUM) 1
-
-/* A C expression that places additional restrictions on the register class to
- use when it is necessary to copy value X into a register in class CLASS.
- The value is a register class; perhaps CLASS, or perhaps another, smaller
- class. On many machines, the following definition is safe:
-
- #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
-*/
-#define PREFERRED_RELOAD_CLASS(X, CLASS) (CLASS)
-
-#define SECONDARY_RELOAD_CLASS(CLASS,MODE,X) \
- mt_secondary_reload_class((CLASS), (MODE), (X))
-
-/* A C expression for the maximum number of consecutive registers of
- class CLASS needed to hold a value of mode MODE. */
-#define CLASS_MAX_NREGS(CLASS, MODE) \
- ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
-
-/* For MorphoRISC1:
-
- `I' is used for the range of constants an arithmetic insn can
- actually contain (16-bit signed integers).
-
- `J' is used for the range which is just zero (ie, $r0).
-
- `K' is used for the range of constants a logical insn can actually
- contain (16-bit zero-extended integers).
-
- `L' is used for the range of constants that be loaded with lui
- (ie, the bottom 16 bits are zero).
-
- `M' is used for the range of constants that take two words to load
- (ie, not matched by `I', `K', and `L').
-
- `N' is used for negative 16-bit constants other than -65536.
-
- `O' is a 15-bit signed integer.
-
- `P' is used for positive 16-bit constants. */
-
-#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000)
-#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (INTVAL (X)) < 0x10000)
-
-/* A C expression that defines the machine-dependent operand
- constraint letters that specify particular ranges of integer
- values. If C is one of those letters, the expression should check
- that VALUE, an integer, is in the appropriate range and return 1 if
- so, 0 otherwise. If C is not one of those letters, the value
- should be 0 regardless of VALUE. */
-#define CONST_OK_FOR_LETTER_P(VALUE, C) \
- ((C) == 'I' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0x8000) < 0x10000) \
- : (C) == 'J' ? ((VALUE) == 0) \
- : (C) == 'K' ? ((unsigned HOST_WIDE_INT) (VALUE) < 0x10000) \
- : (C) == 'L' ? (((VALUE) & 0x0000ffff) == 0 \
- && (((VALUE) & ~2147483647) == 0 \
- || ((VALUE) & ~2147483647) == ~2147483647)) \
- : (C) == 'M' ? ((((VALUE) & ~0x0000ffff) != 0) \
- && (((VALUE) & ~0x0000ffff) != ~0x0000ffff) \
- && (((VALUE) & 0x0000ffff) != 0 \
- || (((VALUE) & ~2147483647) != 0 \
- && ((VALUE) & ~2147483647) != ~2147483647))) \
- : (C) == 'N' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0xffff) < 0xffff) \
- : (C) == 'O' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0x4000) < 0x8000) \
- : (C) == 'P' ? ((VALUE) != 0 && (((VALUE) & ~0x0000ffff) == 0)) \
- : 0)
-
-/* A C expression that defines the machine-dependent operand constraint letters
- (`G', `H') that specify particular ranges of `const_double' values. */
-#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-
-/* Most negative value represent on mt */
-#define MT_MIN_INT 0x80000000
-
-/* Basic Stack Layout. */
-
-enum save_direction
-{
- FROM_PROCESSOR_TO_MEM,
- FROM_MEM_TO_PROCESSOR
-};
-
-/* Tell prologue and epilogue if register REGNO should be saved / restored.
- The return address and frame pointer are treated separately.
- Don't consider them here. */
-#define MUST_SAVE_REGISTER(regno) \
- ( (regno) != GPR_LINK \
- && (regno) != GPR_FP \
- && (regno) != GPR_SP \
- && (regno) != GPR_R0 \
- && (( df_regs_ever_live_p (regno) && ! call_used_regs[regno] ) \
- /* Save ira register in an interrupt handler. */ \
- || (interrupt_handler && (regno) == GPR_INTERRUPT_LINK) \
- /* Save any register used in an interrupt handler. */ \
- || (interrupt_handler && df_regs_ever_live_p (regno)) \
- /* Save call clobbered registers in non-leaf interrupt \
- handlers. */ \
- || (interrupt_handler && call_used_regs[regno] \
- && !current_function_is_leaf) \
- ||(crtl->calls_eh_return \
- && (regno == GPR_R7 || regno == GPR_R8)) \
- ) \
- )
-
-#define STACK_GROWS_DOWNWARD 1
-
-/* Offset from the frame pointer to the first local variable slot to be
- allocated.
-
- If `FRAME_GROWS_DOWNWARD', find the next slot's offset by
- subtracting the first slot's length from `STARTING_FRAME_OFFSET'.
- Otherwise, it is found by adding the length of the first slot to
- the value `STARTING_FRAME_OFFSET'. */
-#define STARTING_FRAME_OFFSET crtl->outgoing_args_size
-
-/* Offset from the argument pointer register to the first argument's address.
- On some machines it may depend on the data type of the function.
-
- If `ARGS_GROW_DOWNWARD', this is the offset to the location above the first
- argument's address. */
-#define FIRST_PARM_OFFSET(FUNDECL) 0
-
-#define RETURN_ADDR_RTX(COUNT, FRAMEADDR) \
- mt_return_addr_rtx (COUNT)
-
-/* A C expression whose value is RTL representing the location of the incoming
- return address at the beginning of any function, before the prologue. This
- RTL is either a `REG', indicating that the return value is saved in `REG',
- or a `MEM' representing a location in the stack.
-
- You only need to define this macro if you want to support call frame
- debugging information like that provided by DWARF 2. */
-#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (SImode, GPR_LINK)
-
-/* A C expression whose value is an integer giving the offset, in bytes, from
- the value of the stack pointer register to the top of the stack frame at the
- beginning of any function, before the prologue. The top of the frame is
- defined to be the value of the stack pointer in the previous frame, just
- before the call instruction.
-
- You only need to define this macro if you want to support call frame
- debugging information like that provided by DWARF 2. */
-#define INCOMING_FRAME_SP_OFFSET 0
-
-#define STACK_POINTER_REGNUM GPR_SP
-
-#define FRAME_POINTER_REGNUM GPR_FP
-
-/* The register number of the arg pointer register, which is used to
- access the function's argument list. */
-#define ARG_POINTER_REGNUM (SPECIAL_REG_FIRST + 0)
-
-/* Register numbers used for passing a function's static chain pointer. */
-#define STATIC_CHAIN_REGNUM 10
-
-/* A C expression which is nonzero if a function must have and use a frame
- pointer. */
-#define FRAME_POINTER_REQUIRED 0
-
-/* Structure to be filled in by compute_frame_size with register
- save masks, and offsets for the current function. */
-
-struct mt_frame_info
-{
- unsigned int total_size; /* # Bytes that the entire frame takes up. */
- unsigned int pretend_size; /* # Bytes we push and pretend caller did. */
- unsigned int args_size; /* # Bytes that outgoing arguments take up. */
- unsigned int extra_size;
- unsigned int reg_size; /* # Bytes needed to store regs. */
- unsigned int var_size; /* # Bytes that variables take up. */
- unsigned int frame_size; /* # Bytes in current frame. */
- unsigned int reg_mask; /* Mask of saved registers. */
- unsigned int save_fp; /* Nonzero if frame pointer must be saved. */
- unsigned int save_lr; /* Nonzero if return pointer must be saved. */
- int initialized; /* Nonzero if frame size already calculated. */
-};
-
-extern struct mt_frame_info current_frame_info;
-
-/* If defined, this macro specifies a table of register pairs used to eliminate
- unneeded registers that point into the stack frame. */
-#define ELIMINABLE_REGS \
-{ \
- {ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
- {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
- {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM} \
-}
-
-/* A C expression that returns nonzero if the compiler is allowed to try to
- replace register number FROM with register number TO. */
-#define CAN_ELIMINATE(FROM, TO) \
- ((FROM) == ARG_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM \
- ? ! frame_pointer_needed \
- : 1)
-
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
- specifies the initial difference between the specified pair of
- registers. This macro must be defined if `ELIMINABLE_REGS' is
- defined. */
-#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
- (OFFSET) = mt_initial_elimination_offset (FROM, TO)
-
-/* If defined, the maximum amount of space required for outgoing
- arguments will be computed and placed into the variable
- `crtl->outgoing_args_size'. */
-#define ACCUMULATE_OUTGOING_ARGS 1
-
-/* Define this if it is the responsibility of the caller to
- allocate the area reserved for arguments passed in registers. */
-#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
-
-/* The number of register assigned to holding function arguments. */
-#define MT_NUM_ARG_REGS 4
-
-/* Define this if it is the responsibility of the caller to allocate
- the area reserved for arguments passed in registers. */
-#define REG_PARM_STACK_SPACE(FNDECL) (MT_NUM_ARG_REGS * UNITS_PER_WORD)
-
-/* Define this macro if `REG_PARM_STACK_SPACE' is defined, but the stack
- parameters don't skip the area specified by it. */
-#define STACK_PARMS_IN_REG_PARM_AREA
-
-/* A C expression that should indicate the number of bytes of its own
- arguments that a function pops on returning, or 0 if the function
- pops no arguments and the caller must therefore pop them all after
- the function returns. */
-#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACK_SIZE) 0
-
-#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
- mt_function_arg (& (CUM), (MODE), (TYPE), (NAMED), FALSE)
-
-#define CUMULATIVE_ARGS int
-
-#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
- mt_init_cumulative_args (& (CUM), FNTYPE, LIBNAME, FNDECL, FALSE)
-
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
- mt_function_arg_advance (&CUM, MODE, TYPE, NAMED)
-
-#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \
- mt_function_arg_boundary (MODE, TYPE)
-
-#define FUNCTION_ARG_REGNO_P(REGNO) \
- ((REGNO) >= FIRST_ARG_REGNUM && ((REGNO) <= LAST_ARG_REGNUM))
-
-#define RETURN_VALUE_REGNUM RETVAL_REGNUM
-
-#define FUNCTION_VALUE(VALTYPE, FUNC) \
- mt_function_value (VALTYPE, TYPE_MODE(VALTYPE), FUNC)
-
-#define LIBCALL_VALUE(MODE) \
- mt_function_value (NULL_TREE, MODE, NULL_TREE)
-
-#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == RETURN_VALUE_REGNUM)
-
-/* A C expression which can inhibit the returning of certain function
- values in registers, based on the type of value. */
-#define TARGET_RETURN_IN_MEMORY mt_return_in_memory
-
-/* Define this macro to be 1 if all structure and union return values must be
- in memory. */
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* Define this macro as a C expression that is nonzero if the return
- instruction or the function epilogue ignores the value of the stack
- pointer; in other words, if it is safe to delete an instruction to
- adjust the stack pointer before a return from the function. */
-#define EXIT_IGNORE_STACK 1
-
-#define EPILOGUE_USES(REGNO) mt_epilogue_uses(REGNO)
-
-/* Define this macro if the function epilogue contains delay slots to which
- instructions from the rest of the function can be "moved". */
-#define DELAY_SLOTS_FOR_EPILOGUE 1
-
-/* A C expression that returns 1 if INSN can be placed in delay slot number N
- of the epilogue. */
-#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN, N) 0
-
-#define FUNCTION_PROFILER(FILE, LABELNO) gcc_unreachable ()
-
-/* Trampolines are not implemented. */
-#define TRAMPOLINE_SIZE 0
-
-#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, STATIC_CHAIN)
-
-/* ?? What is this -- aldyh ?? */
-#define UCMPSI3_LIBCALL "__ucmpsi3"
-
-/* Addressing Modes. */
-
-/* A C expression that is 1 if the RTX X is a constant which is a valid
- address. */
-#define CONSTANT_ADDRESS_P(X) CONSTANT_P (X)
-
-/* A number, the maximum number of registers that can appear in a valid memory
- address. Note that it is up to you to specify a value equal to the maximum
- number that `GO_IF_LEGITIMATE_ADDRESS' would ever accept. */
-#define MAX_REGS_PER_ADDRESS 1
-
-#ifdef REG_OK_STRICT
-#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
-{ \
- if (mt_legitimate_address_p (MODE, X, 1)) \
- goto ADDR; \
-}
-#else
-#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
-{ \
- if (mt_legitimate_address_p (MODE, X, 0)) \
- goto ADDR; \
-}
-#endif
-
-#ifdef REG_OK_STRICT
-#define REG_OK_FOR_BASE_P(X) mt_reg_ok_for_base_p (X, 1)
-#else
-#define REG_OK_FOR_BASE_P(X) mt_reg_ok_for_base_p (X, 0)
-#endif
-
-#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_BASE_P (X)
-
-#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) {}
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
-#define LEGITIMATE_CONSTANT_P(X) 1
-
-/* A C expression for the cost of moving data of mode M between a register and
- memory. A value of 2 is the default; this cost is relative to those in
- `REGISTER_MOVE_COST'.
-
- If moving between registers and memory is more expensive than between two
- registers, you should define this macro to express the relative cost. */
-#define MEMORY_MOVE_COST(M,C,I) 10
-
-/* Define this macro as a C expression which is nonzero if accessing less than
- a word of memory (i.e. a `char' or a `short') is no faster than accessing a
- word of memory. */
-#define SLOW_BYTE_ACCESS 1
-
-#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) 1
-
-#define TEXT_SECTION_ASM_OP ".text"
-
-#define DATA_SECTION_ASM_OP ".data"
-
-#define BSS_SECTION_ASM_OP "\t.section\t.bss"
-
-/* A C string constant for text to be output before each `asm' statement or
- group of consecutive ones. Normally this is `"#APP"', which is a comment
- that has no effect on most assemblers but tells the GNU assembler that it
- must check the lines that follow for all valid assembler constructs. */
-#define ASM_APP_ON "#APP\n"
-
-/* A C string constant for text to be output after each `asm' statement or
- group of consecutive ones. Normally this is `"#NO_APP"', which tells the
- GNU assembler to resume making the time-saving assumptions that are valid
- for ordinary compiler output. */
-#define ASM_APP_OFF "#NO_APP\n"
-
-/* This is how to output an assembler line defining a `char' constant. */
-#define ASM_OUTPUT_CHAR(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.byte\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* This is how to output an assembler line defining a `short' constant. */
-#define ASM_OUTPUT_SHORT(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.hword\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* This is how to output an assembler line defining an `int' constant.
- We also handle symbol output here. */
-#define ASM_OUTPUT_INT(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.word\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* A C statement to output to the stdio stream STREAM an assembler instruction
- to assemble a single byte containing the number VALUE.
-
- This declaration must be present. */
-#define ASM_OUTPUT_BYTE(STREAM, VALUE) \
- fprintf (STREAM, "\t%s\t0x%x\n", ASM_BYTE_OP, (VALUE))
-
-/* Globalizing directive for a label. */
-#define GLOBAL_ASM_OP "\t.globl "
-
-#define REGISTER_NAMES \
-{ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", \
- "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", \
- "LOOP1", "LOOP2", "LOOP3", "LOOP4", "ap" }
-
-/* If defined, a C initializer for an array of structures containing a name and
- a register number. This macro defines additional names for hard registers,
- thus allowing the `asm' option in declarations to refer to registers using
- alternate names. */
-#define ADDITIONAL_REGISTER_NAMES \
-{ { "FP", 12}, {"SP", 13}, {"RA", 14}, {"IRA", 15} }
-
-/* Define this macro if you are using an unusual assembler that requires
- different names for the machine instructions.
-
- The definition is a C statement or statements which output an assembler
- instruction opcode to the stdio stream STREAM. The macro-operand PTR is a
- variable of type `char *' which points to the opcode name in its "internal"
- form--the form that is written in the machine description. The definition
- should output the opcode name to STREAM, performing any translation you
- desire, and increment the variable PTR to point at the end of the opcode so
- that it will not be output twice. */
-#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
- (PTR) = mt_asm_output_opcode (STREAM, PTR)
-
-#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
- mt_final_prescan_insn (INSN, OPVEC, NOPERANDS)
-
-#define PRINT_OPERAND(STREAM, X, CODE) mt_print_operand (STREAM, X, CODE)
-
-/* A C expression which evaluates to true if CODE is a valid punctuation
- character for use in the `PRINT_OPERAND' macro. */
-/* #: Print nop for delay slot. */
-#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '#')
-
-#define PRINT_OPERAND_ADDRESS(STREAM, X) mt_print_operand_address (STREAM, X)
-
-/* If defined, C string expressions to be used for the `%R', `%L', `%U', and
- `%I' options of `asm_fprintf' (see `final.c'). These are useful when a
- single `md' file must support multiple assembler formats. In that case, the
- various `tm.h' files can define these macros differently.
-
- USER_LABEL_PREFIX is defined in svr4.h. */
-#define REGISTER_PREFIX "%"
-#define LOCAL_LABEL_PREFIX "."
-#define USER_LABEL_PREFIX ""
-#define IMMEDIATE_PREFIX ""
-
-/* This macro should be provided on machines where the addresses in a dispatch
- table are relative to the table's own address.
-
- The definition should be a C statement to output to the stdio stream STREAM
- an assembler pseudo-instruction to generate a difference between two labels.
- VALUE and REL are the numbers of two internal labels. The definitions of
- these labels are output using `targetm.asm_out.internal_label', and they
- must be printed in the same way here. */
-#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \
-fprintf (STREAM, "\t.word .L%d-.L%d\n", VALUE, REL)
-
-/* This macro should be provided on machines where the addresses in a dispatch
- table are absolute.
-
- The definition should be a C statement to output to the stdio stream STREAM
- an assembler pseudo-instruction to generate a reference to a label. VALUE
- is the number of an internal label whose definition is output using
- `targetm.asm_out.internal_label'. */
-#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \
-fprintf (STREAM, "\t.word .L%d\n", VALUE)
-
-#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (GPR_LINK)
-
-#define EH_RETURN_DATA_REGNO(N) \
- ((N) == 0 ? GPR_R7 : (N) == 1 ? GPR_R8 : INVALID_REGNUM)
-
-#define EH_RETURN_STACKADJ_REGNO GPR_R11
-#define EH_RETURN_STACKADJ_RTX \
- gen_rtx_REG (SImode, EH_RETURN_STACKADJ_REGNO)
-#define EH_RETURN_HANDLER_REGNO GPR_R10
-#define EH_RETURN_HANDLER_RTX \
- gen_rtx_REG (SImode, EH_RETURN_HANDLER_REGNO)
-
-#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
- fprintf ((STREAM), "\t.p2align %d\n", (POWER))
-
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#ifndef DWARF2_DEBUGGING_INFO
-#define DWARF2_DEBUGGING_INFO
-#endif
-
-/* Define this macro if GCC should produce dwarf version 2-style
- line numbers. This usually requires extending the assembler to
- support them, and #defining DWARF2_LINE_MIN_INSN_LENGTH in the
- assembler configuration header files. */
-#define DWARF2_ASM_LINE_DEBUG_INFO 1
-
-/* An alias for a machine mode name. This is the machine mode that
- elements of a jump-table should have. */
-#define CASE_VECTOR_MODE SImode
-
-/* Define this macro if operations between registers with integral
- mode smaller than a word are always performed on the entire
- register. Most RISC machines have this property and most CISC
- machines do not. */
-#define WORD_REGISTER_OPERATIONS
-
-/* The maximum number of bytes that a single instruction can move quickly from
- memory to memory. */
-#define MOVE_MAX 4
-
-/* A C expression which is nonzero if on this machine it is safe to "convert"
- an integer of INPREC bits to one of OUTPREC bits (where OUTPREC is smaller
- than INPREC) by merely operating on it as if it had only OUTPREC bits.
-
- On many machines, this expression can be 1.
-
- When `TRULY_NOOP_TRUNCATION' returns 1 for a pair of sizes for modes for
- which `MODES_TIEABLE_P' is 0, suboptimal code can result. If this is the
- case, making `TRULY_NOOP_TRUNCATION' return 0 in such cases may improve
- things. */
-#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-
-#define Pmode SImode
-
-/* An alias for the machine mode used for memory references to functions being
- called, in `call' RTL expressions. On most machines this should be
- `QImode'. */
-#define FUNCTION_MODE QImode
-
-#define HANDLE_SYSV_PRAGMA 1
-
-/* Indicate how many instructions can be issued at the same time. */
-#define ISSUE_RATE 1
-
-/* Define the information needed to generate branch and scc insns. This is
- stored from the compare operation. Note that we can't use "rtx" here
- since it hasn't been defined! */
-
-extern struct rtx_def * mt_compare_op0;
-extern struct rtx_def * mt_compare_op1;
-