aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-01-31 08:24:55 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-01-31 08:24:55 -0500
commit9049a716b2d38b1e3bc902b6c0013e532af21334 (patch)
tree5a19be3c33975481a6631bf6454fe7b2a91dc485 /gcc
parent4710d01a2951d789b802d8c84becf444c3c3724f (diff)
downloadgcc-9049a716b2d38b1e3bc902b6c0013e532af21334.zip
gcc-9049a716b2d38b1e3bc902b6c0013e532af21334.tar.gz
gcc-9049a716b2d38b1e3bc902b6c0013e532af21334.tar.bz2
(STATIC_CHAIN_REGNUM): Redefine to use register a1.
(TRAMPOLINE_TEMPLATE): Likewise. From-SVN: r11136
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/m68k/m68kv4.h30
1 files changed, 28 insertions, 2 deletions
diff --git a/gcc/config/m68k/m68kv4.h b/gcc/config/m68k/m68kv4.h
index 4864413..3a8b2e0 100644
--- a/gcc/config/m68k/m68kv4.h
+++ b/gcc/config/m68k/m68kv4.h
@@ -1,5 +1,5 @@
/* Target definitions for GNU compiler for mc680x0 running System V.4
- Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
Written by Ron Guilmette (rfg@netcom.com) and Fred Fish (fnf@cygnus.com).
@@ -113,6 +113,13 @@ while (0)
#undef STRUCT_VALUE_REGNUM
#define STRUCT_VALUE_REGNUM 8
+/* Register in which static-chain is passed to a function. The
+ default in m68k.h is a0, but that is already the struct value
+ regnum. Make it a1 instead. */
+
+#undef STATIC_CHAIN_REGNUM
+#define STATIC_CHAIN_REGNUM 9
+
#define ASM_COMMENT_START "#"
#undef TYPE_OPERAND_FMT
@@ -186,7 +193,8 @@ do { \
#undef LIBCALL_VALUE
#define LIBCALL_VALUE(MODE) \
- (((MODE) == SFmode || (MODE) == DFmode) && TARGET_68881 \
+ ((((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode) \
+ && TARGET_68881) \
? gen_rtx (REG, (MODE), 16) \
: gen_rtx (REG, (MODE), 0))
@@ -302,3 +310,21 @@ int switch_table_difference_label_flag;
if (! TARGET_68020 && flag_pic == 2) \
error("-fPIC is not currently supported on the 68000 or 68010\n"); \
}
+
+/* Output assembler code for a block containing the constant parts
+ of a trampoline, leaving space for the variable parts. */
+
+/* On m68k svr4, the trampoline is different from the generic version
+ in that we use a1 as the static call chain. */
+
+#undef TRAMPOLINE_TEMPLATE
+#define TRAMPOLINE_TEMPLATE(FILE) \
+{ \
+ ASM_OUTPUT_SHORT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x207b)); \
+ ASM_OUTPUT_SHORT (FILE, gen_rtx (CONST_INT, VOIDmode, 8)); \
+ ASM_OUTPUT_SHORT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x2f3a)); \
+ ASM_OUTPUT_SHORT (FILE, gen_rtx (CONST_INT, VOIDmode, 8)); \
+ ASM_OUTPUT_SHORT (FILE, gen_rtx (CONST_INT, VOIDmode, 0x4e75)); \
+ ASM_OUTPUT_INT (FILE, const0_rtx); \
+ ASM_OUTPUT_INT (FILE, const0_rtx); \
+}