OSDN Git Service

2011-03-28 Vladimir Makarov <vmakarov@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / config / stormy16 / stormy16.h
index 4ea89a2..53f4d2d 100644 (file)
@@ -1,6 +1,6 @@
 /* Xstormy16 cpu description.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007,
-   2008, 2009, 2010  Free Software Foundation, Inc.
+   2008, 2009, 2010, 2011  Free Software Foundation, Inc.
    Contributed by Red Hat, Inc.
 
    This file is part of GCC.
 #undef  ASM_SPEC
 #define ASM_SPEC ""
 
+#undef  LINK_SPEC
+#define LINK_SPEC "%{h*} %{v:-V} \
+                  %{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic}"
+
 /* For xstormy16:
    - If -msim is specified, everything is built and linked as for the sim.
    - If -T is specified, that linker script is used, and it should provide
@@ -53,8 +57,6 @@
   while (0)
 
 #define TARGET_VERSION fprintf (stderr, " (xstormy16 cpu core)");
-
-#define CAN_DEBUG_WITHOUT_FP
 \f
 /* Storage Layout.  */
 
 
 #define PTRDIFF_TYPE "int"
 
+#undef  WCHAR_TYPE
+#define WCHAR_TYPE "long int"
+
 #undef  WCHAR_TYPE_SIZE
 #define WCHAR_TYPE_SIZE 32
 
@@ -174,11 +179,6 @@ enum reg_class
 
 #define N_REG_CLASSES ((int) LIM_REG_CLASSES)
 
-#define IRA_COVER_CLASSES                      \
-{                                              \
-  GENERAL_REGS, LIM_REG_CLASSES                        \
-}
-
 #define REG_CLASS_NAMES                                \
 {                                              \
   "NO_REGS",                                   \
@@ -220,36 +220,10 @@ enum reg_class
 
 #define INDEX_REG_CLASS GENERAL_REGS
 
-/*   The following letters are unavailable, due to being used as
-   constraints:
-       '0'..'9'
-       '<', '>'
-       'E', 'F', 'G', 'H'
-       'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
-       'Q', 'R', 'S', 'T', 'U'
-       'V', 'X'
-       'g', 'i', 'm', 'n', 'o', 'p', 'r', 's'.  */
-
-#define REG_CLASS_FROM_LETTER(CHAR)            \
- (  (CHAR) == 'a' ? R0_REGS                    \
-  : (CHAR) == 'b' ? R1_REGS                    \
-  : (CHAR) == 'c' ? R2_REGS                    \
-  : (CHAR) == 'd' ? R8_REGS                    \
-  : (CHAR) == 'e' ? EIGHT_REGS                 \
-  : (CHAR) == 't' ? TWO_REGS                   \
-  : (CHAR) == 'z' ? ICALL_REGS                 \
-  : NO_REGS)
-
 #define REGNO_OK_FOR_BASE_P(NUM) 1
 
 #define REGNO_OK_FOR_INDEX_P(NUM) REGNO_OK_FOR_BASE_P (NUM)
 
-#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-  xstormy16_preferred_reload_class (X, CLASS)
-
-#define PREFERRED_OUTPUT_RELOAD_CLASS(X, CLASS) \
-  xstormy16_preferred_reload_class (X, CLASS)
-
 /* This chip has the interesting property that only the first eight
    registers can be moved to/from memory.  */
 #define SECONDARY_RELOAD_CLASS(CLASS, MODE, X)                 \
@@ -258,22 +232,6 @@ enum reg_class
 #define CLASS_MAX_NREGS(CLASS, MODE) \
   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
 
-#define CONST_OK_FOR_LETTER_P(VALUE, C)                        \
-  (  (C) == 'I' ? (VALUE) >= 0 && (VALUE) <= 3         \
-   : (C) == 'J' ? exact_log2 (VALUE) != -1             \
-   : (C) == 'K' ? exact_log2 (~(VALUE)) != -1          \
-   : (C) == 'L' ? (VALUE) >= 0 && (VALUE) <= 255       \
-   : (C) == 'M' ? (VALUE) >= -255 && (VALUE) <= 0      \
-   : (C) == 'N' ? (VALUE) >= -3 && (VALUE) <= 0                \
-   : (C) == 'O' ? (VALUE) >= 1 && (VALUE) <= 4         \
-   : (C) == 'P' ? (VALUE) >= -4 && (VALUE) <= -1       \
-   : 0 )
-
-#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-
-#define EXTRA_CONSTRAINT(VALUE, C) \
-  xstormy16_extra_constraint_p (VALUE, C)
-
 \f
 /* Basic Stack Layout.  */
 
@@ -339,9 +297,6 @@ enum reg_class
     + 1)                                                       \
    / 2)
 
-#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-       xstormy16_function_arg (CUM, MODE, TYPE, NAMED)
-
 /* For this platform, the value of CUMULATIVE_ARGS is the number of words
    of arguments that have been passed in registers so far.  */
 #define CUMULATIVE_ARGS int
@@ -349,9 +304,6 @@ enum reg_class
 #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
   (CUM) = 0
 
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED)                   \
-  ((CUM) = xstormy16_function_arg_advance (CUM, MODE, TYPE, NAMED))
-
 #define FUNCTION_ARG_REGNO_P(REGNO)                                    \
   ((REGNO) >= FIRST_ARGUMENT_REGISTER                                  \
    && (REGNO) < FIRST_ARGUMENT_REGISTER + NUM_ARGUMENT_REGISTERS)
@@ -362,13 +314,6 @@ enum reg_class
 /* The number of the hard register that is used to return a scalar value from a
    function call.  */
 #define RETURN_VALUE_REGNUM    FIRST_ARGUMENT_REGISTER
-     
-#define FUNCTION_VALUE(VALTYPE, FUNC) \
-  xstormy16_function_value (VALTYPE, FUNC)
-
-#define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, RETURN_VALUE_REGNUM)
-
-#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == RETURN_VALUE_REGNUM)
 
 \f
 /* Function Entry and Exit.  */
@@ -399,32 +344,11 @@ enum reg_class
 
 #define MAX_REGS_PER_ADDRESS 1
 
-#ifdef REG_OK_STRICT
-#define REG_OK_FOR_BASE_P(X)                                              \
-  (REGNO_OK_FOR_BASE_P (REGNO (X)) && (REGNO (X) < FIRST_PSEUDO_REGISTER))
-#else
-#define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
-#endif
-
-#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_BASE_P (X)
-
-/* On this chip, this is true if the address is valid with an offset
-   of 0 but not of 6, because in that case it cannot be used as an
-   address for DImode or DFmode, or if the address is a post-increment
-   or pre-decrement address.  */
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)                       \
-  if (xstormy16_mode_dependent_address_p (ADDR))                       \
-    goto LABEL
-
 #define LEGITIMATE_CONSTANT_P(X) 1
 
 \f
 /* Describing Relative Costs of Operations.  */
 
-#define REGISTER_MOVE_COST(MODE, FROM, TO) 2
-
-#define MEMORY_MOVE_COST(M,C,I) (5 + memory_move_secondary_cost (M, C, I))
-
 #define BRANCH_COST(speed_p, predictable_p) 5
 
 #define SLOW_BYTE_ACCESS 0
@@ -511,11 +435,6 @@ enum reg_class
   { { "r14", 14 },                             \
     { "r15", 15 } }
 
-#define PRINT_OPERAND(STREAM, X, CODE) xstormy16_print_operand (STREAM, X, CODE)
-
-#define PRINT_OPERAND_ADDRESS(STREAM, X) xstormy16_print_operand_address (STREAM, X)
-
-/* USER_LABEL_PREFIX is defined in svr4.h.  */
 #define REGISTER_PREFIX ""
 #define LOCAL_LABEL_PREFIX "."
 #define USER_LABEL_PREFIX ""
@@ -557,7 +476,6 @@ enum reg_class
 \f
 /* Macros Affecting all Debug Formats.  */
 
-/* Defined in svr4.h.  */
 #undef  PREFERRED_DEBUGGING_TYPE
 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
 
@@ -595,5 +513,3 @@ enum reg_class
 #define FUNCTION_MODE HImode
 
 #define NO_IMPLICIT_EXTERN_C
-
-#define HANDLE_SYSV_PRAGMA 1