X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fconfig%2Fstormy16%2Fstormy16.h;h=53f4d2d7b650ffa9174e50a0d841e804f004ede0;hb=66d9a7b9e8a0c85a51467330f51ead74e77b7eb8;hp=4ea89a218dbc75bc6fa7d28c54852509c7d46933;hpb=f5bc28dae417e7cd7eddaa71046445d359481467;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/config/stormy16/stormy16.h b/gcc/config/stormy16/stormy16.h index 4ea89a218db..53f4d2d7b65 100644 --- a/gcc/config/stormy16/stormy16.h +++ b/gcc/config/stormy16/stormy16.h @@ -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. @@ -25,6 +25,10 @@ #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 /* Storage Layout. */ @@ -118,6 +120,9 @@ #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) - /* 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) /* 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 /* 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 /* 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