aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-03-20 11:28:31 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-03-20 11:28:31 -0500
commitd649cc968042b4f44c72aa3068fb3421ba5c873e (patch)
tree489da36125a28d590be97b2861c63a2209ab9913
parent7565a035be546e2a97a4377a92fe89ed15e3b1de (diff)
downloadgcc-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.h34
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); \
+}