aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-01-31 07:09:20 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-01-31 07:09:20 -0500
commitad92f7940c5fbbd8a0b021856e1fbde37eb9bc7a (patch)
tree1491b32c21da5f140e9eaa2c873aa1519a6a565f
parentb107aaf90e6e324b3de872fdbf04067a81ce574b (diff)
downloadgcc-ad92f7940c5fbbd8a0b021856e1fbde37eb9bc7a.zip
gcc-ad92f7940c5fbbd8a0b021856e1fbde37eb9bc7a.tar.gz
gcc-ad92f7940c5fbbd8a0b021856e1fbde37eb9bc7a.tar.bz2
(MACHINE_STATE_{SAVE,RESTORE}): Allow MOTOROLA syntax.
From-SVN: r11126
-rw-r--r--gcc/config/m68k/m68k.h26
1 files changed, 19 insertions, 7 deletions
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index c8280f6..60f3063 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. Sun 68000/68020 version.
- Copyright (C) 1987, 1988, 1993, 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1987, 88, 93, 94, 95, 1996 Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -926,15 +926,27 @@ while(0)
/* Save all registers which may be clobbered by a function call. */
-#define MACHINE_STATE_SAVE(id) \
- asm (" movew cc,sp@-"); \
- asm (" moveml d0/d1/a0/a1,sp@-");
+#ifdef MOTOROLA
+#define MACHINE_STATE_SAVE(id) \
+ asm ("move.w %ccr,-(%sp)"); \
+ asm ("movm.l &0xc0c0,-(%sp)");
+#else
+#define MACHINE_STATE_SAVE(id) \
+ asm ("movew cc,sp@-"); \
+ asm ("moveml d0/d1/a0/a1,sp@-");
+#endif
/* Restore all registers saved by MACHINE_STATE_SAVE. */
-#define MACHINE_STATE_RESTORE(id) \
- asm (" moveml sp@+,d0/d1/a0/a1"); \
- asm (" movew sp@+,cc");
+#ifdef MOTOROLA
+#define MACHINE_STATE_RESTORE(id) \
+ asm ("movm.l (%sp)+,&0x0303"); \
+ asm ("move.w (%sp)+,%ccr");
+#else
+#define MACHINE_STATE_RESTORE(id) \
+ asm ("moveml sp@+,d0/d1/a0/a1"); \
+ asm ("movew sp@+,cc");
+#endif
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in