Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Unified Diff: gcc/gcc/config/h8300/h8300.h

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/config/frv/t-linux ('k') | gcc/gcc/config/h8300/h8300.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/config/h8300/h8300.h
diff --git a/gcc/gcc/config/h8300/h8300.h b/gcc/gcc/config/h8300/h8300.h
index 701223e9c25f49e6ac06386e36321cfb205b2fe7..9757afc2de3c4a54c7d9b65d02099d4acb9f9199 100644
--- a/gcc/gcc/config/h8300/h8300.h
+++ b/gcc/gcc/config/h8300/h8300.h
@@ -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 @@ extern const char * const *h8_reg_names;
/* 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 @@ extern const char * const *h8_reg_names;
/* 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 @@ enum reg_class {
{ 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 @@ struct cum_arg
#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 @@ struct cum_arg
((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.
« no previous file with comments | « gcc/gcc/config/frv/t-linux ('k') | gcc/gcc/config/h8300/h8300.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698