From 9049a716b2d38b1e3bc902b6c0013e532af21334 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 31 Jan 1996 08:24:55 -0500 Subject: [PATCH] (STATIC_CHAIN_REGNUM): Redefine to use register a1. (TRAMPOLINE_TEMPLATE): Likewise. From-SVN: r11136 --- gcc/config/m68k/m68kv4.h | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/gcc/config/m68k/m68kv4.h b/gcc/config/m68k/m68kv4.h index 48644134942..3a8b2e06d59 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); \ +} -- 2.30.2