diff options
Diffstat (limited to 'gcc/config/xtensa/xtensa.h')
-rw-r--r-- | gcc/config/xtensa/xtensa.h | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h index c495ef11af2..3a5a7343a01 100644 --- a/gcc/config/xtensa/xtensa.h +++ b/gcc/config/xtensa/xtensa.h @@ -1,5 +1,5 @@ /* Definitions of Tensilica's Xtensa target machine for GNU compiler. - Copyright 2001,2002 Free Software Foundation, Inc. + Copyright 2001,2002,2003 Free Software Foundation, Inc. Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica. This file is part of GCC. @@ -208,6 +208,15 @@ extern unsigned xtensa_current_frame_size; } \ } while (0) +#define CPP_SPEC " %(subtarget_cpp_spec) " + +#ifndef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC "" +#endif + +#define EXTRA_SPECS \ + { "subtarget_cpp_spec", SUBTARGET_CPP_SPEC }, + /* Define this to set the endianness to use in libgcc2.c, which can not depend on target_flags. */ #define LIBGCC2_WORDS_BIG_ENDIAN XCHAL_HAVE_BE @@ -345,7 +354,6 @@ extern unsigned xtensa_current_frame_size; 0 - 15 AR[0] - AR[15] 16 FRAME_POINTER (fake = initial sp) 17 ARG_POINTER (fake = initial sp + framesize) - 18 LOOP_COUNT (loop count special register) 18 BR[0] for floating-point CC 19 - 34 FR[0] - FR[15] 35 MAC16 accumulator */ @@ -394,10 +402,11 @@ extern unsigned xtensa_current_frame_size; have been exhausted. */ #define REG_ALLOC_ORDER \ -{ 8, 9, 10, 11, 12, 13, 14, 15, 7, 6, 5, 4, 3, 2, 19, \ - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, \ +{ 8, 9, 10, 11, 12, 13, 14, 15, 7, 6, 5, 4, 3, 2, \ + 18, \ + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, \ 0, 1, 16, 17, \ - 36, \ + 35, \ } #define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc () @@ -424,11 +433,6 @@ extern int leaf_function; #define GP_REG_LAST 17 #define GP_REG_NUM (GP_REG_LAST - GP_REG_FIRST + 1) -/* Special registers */ -#define SPEC_REG_FIRST 18 -#define SPEC_REG_LAST 18 -#define SPEC_REG_NUM (SPEC_REG_LAST - SPEC_REG_FIRST + 1) - /* Coprocessor registers */ #define BR_REG_FIRST 18 #define BR_REG_LAST 18 @@ -473,9 +477,6 @@ extern char xtensa_hard_regno_mode_ok[][FIRST_PSEUDO_REGISTER]; == (GET_MODE_CLASS (MODE2) == MODE_FLOAT || \ GET_MODE_CLASS (MODE2) == MODE_COMPLEX_FLOAT)) -/* Register to use for LCOUNT special register. */ -#define COUNT_REGISTER_REGNUM (SPEC_REG_FIRST + 0) - /* Register to use for pushing function arguments. */ #define STACK_POINTER_REGNUM (GP_REG_FIRST + 1) @@ -1539,14 +1540,9 @@ typedef struct xtensa_args { /* Globalizing directive for a label. */ #define GLOBAL_ASM_OP "\t.global\t" -/* This says how to define a global common symbol. */ -#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \ - xtensa_declare_object (STREAM, NAME, "\n\t.comm\t", ",%u\n", (SIZE)) - -/* This says how to define a local common symbol (ie, not visible to - linker). */ -#define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED) \ - xtensa_declare_object (STREAM, NAME, "\n\t.lcomm\t", ",%u\n", (SIZE)) +/* Declare an uninitialized external linkage data object. */ +#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ + asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) /* This is how to output an element of a case-vector that is absolute. */ #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \ @@ -1592,8 +1588,9 @@ typedef struct xtensa_args { /* Define the strings to put out for each section in the object file. */ -#define TEXT_SECTION_ASM_OP "\t.text" /* instructions */ -#define DATA_SECTION_ASM_OP "\t.data" /* large data */ +#define TEXT_SECTION_ASM_OP "\t.text" +#define DATA_SECTION_ASM_OP "\t.data" +#define BSS_SECTION_ASM_OP "\t.section\t.bss" /* Define output to appear before the constant pool. If the function |