diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-03-20 11:28:31 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-03-20 11:28:31 -0500 |
commit | d649cc968042b4f44c72aa3068fb3421ba5c873e (patch) | |
tree | 489da36125a28d590be97b2861c63a2209ab9913 | |
parent | 7565a035be546e2a97a4377a92fe89ed15e3b1de (diff) | |
download | gcc-d649cc968042b4f44c72aa3068fb3421ba5c873e.zip gcc-d649cc968042b4f44c72aa3068fb3421ba5c873e.tar.gz gcc-d649cc968042b4f44c72aa3068fb3421ba5c873e.tar.bz2 |
(ASM_SPEC): Deleted.
(STRUCT_VALUE_REGNUM): Redefine as register a0.
(STATIC_CHAIN_REGNUM): Redefine as register a1.
(TRAMPOLINE_TEMPLATE): Redefine to use the right register.
From-SVN: r11577
-rw-r--r-- | gcc/config/m68k/linux.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/gcc/config/m68k/linux.h b/gcc/config/m68k/linux.h index 641d976..8dffb70 100644 --- a/gcc/config/m68k/linux.h +++ b/gcc/config/m68k/linux.h @@ -100,9 +100,6 @@ Boston, MA 02111-1307, USA. */ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE BITS_PER_WORD -#undef ASM_SPEC -#define ASM_SPEC "%{m68030} %{m68040} %{fpic:-k} %{fPIC:-k}" - #define CPP_PREDEFINES \ "-D__ELF__ -Dunix -Dmc68000 -Dmc68020 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(m68k) -Amachine(m68k)" @@ -199,6 +196,19 @@ Boston, MA 02111-1307, USA. */ fprintf (FILE, "\tjbsr _mcount\n"); \ } +/* Register in which address to store a structure value is passed to a + function. The default in m68k.h is a1. For m68k/SVR4 it is a0. */ + +#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 + /* How to renumber registers for dbx and gdb. On the Sun-3, the floating point registers have numbers 18 to 25, not 16 to 23 as they do in the compiler. */ @@ -292,3 +302,21 @@ do { \ technique. */ #undef PCC_STATIC_STRUCT_RETURN #define DEFAULT_PCC_STRUCT_RETURN 0 + +/* 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); \ +} |