Mercurial > hg > CbC > CbC_gcc
diff gcc/config/h8300/h8300.h @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
line wrap: on
line diff
--- a/gcc/config/h8300/h8300.h Sun Feb 07 18:28:00 2010 +0900 +++ b/gcc/config/h8300/h8300.h Fri Feb 12 23:39:51 2010 +0900 @@ -1,7 +1,7 @@ /* Definitions of target machine for GNU compiler. Renesas H8/300 (generic) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). @@ -147,6 +147,17 @@ /* Show we can debug even without a frame pointer. */ /* #define CAN_DEBUG_WITHOUT_FP */ +/* We want dwarf2 info available to gdb... */ +#define DWARF2_DEBUGGING_INFO 1 +/* ... but we don't actually support full dwarf2 EH. */ +#define MUST_USE_SJLJ_EXCEPTIONS 1 + +/* The return address is pushed on the stack. */ +#define INCOMING_RETURN_ADDR_RTX gen_rtx_MEM (Pmode, gen_rtx_REG (Pmode, STACK_POINTER_REGNUM)) +#define INCOMING_FRAME_SP_OFFSET (POINTER_SIZE / 8) + +#define DWARF_CIE_DATA_ALIGNMENT 2 + /* Define this if addresses of constant functions shouldn't be put through pseudo regs where they can be cse'd. Desirable on machines where ordinary constants are expensive @@ -300,12 +311,6 @@ /* Base register for access to local variables of the function. */ #define FRAME_POINTER_REGNUM FP_REG -/* Value should be nonzero if functions must have frame pointers. - Zero means the frame pointer need not be set up (and parms - may be accessed via the stack pointer) in functions that seem suitable. - This is computed in `reload', in reload1.c. */ -#define FRAME_POINTER_REQUIRED 0 - /* Base register for access to arguments of the function. */ #define ARG_POINTER_REGNUM AP_REG @@ -564,17 +569,6 @@ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} -/* Given FROM and TO register numbers, say whether this elimination is allowed. - Frame pointer elimination is automatically handled. - - For the h8300, if frame pointer elimination is being done, we would like to - convert ap and rp into sp, not fp. - - All other eliminations are valid. */ - -#define CAN_ELIMINATE(FROM, TO) \ - ((TO) == STACK_POINTER_REGNUM ? ! frame_pointer_needed : 1) - /* Define the offset between two registers, one to be eliminated, and the other its replacement, at the start of a routine. */ @@ -689,58 +683,9 @@ #define EXIT_IGNORE_STACK 0 -/* We emit the entire trampoline with INITIALIZE_TRAMPOLINE. - Depending on the pointer size, we use a different trampoline. - - Pmode == HImode - vvvv context - 1 0000 7903xxxx mov.w #0x1234,r3 - 2 0004 5A00xxxx jmp @0x1234 - ^^^^ function - - Pmode == SImode - vvvvvvvv context - 2 0000 7A03xxxxxxxx mov.l #0x12345678,er3 - 3 0006 5Axxxxxx jmp @0x123456 - ^^^^^^ function -*/ - /* Length in units of the trampoline for entering a nested function. */ #define TRAMPOLINE_SIZE ((Pmode == HImode) ? 8 : 12) - -/* Emit RTL insns to build a trampoline. - FNADDR is an RTX for the address of the function's pure code. - CXT is an RTX for the static chain value for the function. */ - -#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ - do \ - { \ - if (Pmode == HImode) \ - { \ - emit_move_insn (gen_rtx_MEM (HImode, (TRAMP)), GEN_INT (0x7903)); \ - emit_move_insn (gen_rtx_MEM (Pmode, plus_constant ((TRAMP), 2)), \ - (CXT)); \ - emit_move_insn (gen_rtx_MEM (Pmode, plus_constant ((TRAMP), 4)), \ - GEN_INT (0x5a00)); \ - emit_move_insn (gen_rtx_MEM (Pmode, plus_constant ((TRAMP), 6)), \ - (FNADDR)); \ - } \ - else \ - { \ - rtx tem = gen_reg_rtx (Pmode); \ - \ - emit_move_insn (gen_rtx_MEM (HImode, (TRAMP)), GEN_INT (0x7a03)); \ - emit_move_insn (gen_rtx_MEM (Pmode, plus_constant ((TRAMP), 2)), \ - (CXT)); \ - emit_move_insn (tem, (FNADDR)); \ - emit_insn (gen_andsi3 (tem, tem, GEN_INT (0x00ffffff))); \ - emit_insn (gen_iorsi3 (tem, tem, GEN_INT (0x5a000000))); \ - emit_move_insn (gen_rtx_MEM (Pmode, plus_constant ((TRAMP), 6)), \ - tem); \ - } \ - } \ - while (0) /* Addressing modes, and classification of registers for them. */ @@ -927,24 +872,6 @@ ((C) == 'W') -#ifndef REG_OK_STRICT -#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ - do \ - { \ - if (h8300_legitimate_address_p ((MODE), (X), 0)) \ - goto ADDR; \ - } \ - while (0) -#else -#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ - do \ - { \ - if (h8300_legitimate_address_p ((MODE), (X), 1)) \ - goto ADDR; \ - } \ - while (0) -#endif - /* Go to LABEL if ADDR (a legitimate address expression) has an effect that depends on the machine mode it is used for.