summaryrefslogtreecommitdiff
path: root/gcc/config/m68k/m68k.h
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1997-06-09 17:22:47 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1997-06-09 17:22:47 +0000
commit99e0c8d99db4e7fea2e679bb4bd2feb2e6d8126f (patch)
tree09fae348c7b0e2186f5fd023499c472623119d4d /gcc/config/m68k/m68k.h
parent52afbef45c8710c0f2ca09fa0ed6c75a5be40ade (diff)
downloadgcc-99e0c8d99db4e7fea2e679bb4bd2feb2e6d8126f.tar.gz
(MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Test
#ifdef __mcf52000__, not if (TARGET_52000); fixed for mc68000 case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14178 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/m68k/m68k.h')
-rw-r--r--gcc/config/m68k/m68k.h67
1 files changed, 50 insertions, 17 deletions
diff --git a/gcc/config/m68k/m68k.h b/gcc/config/m68k/m68k.h
index f8df97e80d3..07ce8724209 100644
--- a/gcc/config/m68k/m68k.h
+++ b/gcc/config/m68k/m68k.h
@@ -1020,69 +1020,102 @@ while(0)
#define FUNCTION_BLOCK_PROFILER_EXIT(FILE) \
asm_fprintf (FILE, "\tjsr %U__bb_trace_ret\n");
-/* Save all registers which may be clobbered by a function call. */
+/* Save all registers which may be clobbered by a function call.
+ MACHINE_STATE_SAVE and MACHINE_STATE_RESTORE are target-code macros,
+ used in libgcc2.c. They may not refer to TARGET_* macros !!! */
+#if defined (__mc68010__) || defined(mc68010) \
+ || defined(__mc68020__) || defined(mc68020) \
+ || defined(__mc68030__) || defined(mc68030) \
+ || defined(__mc68040__) || defined(mc68040) \
+ || defined(__mc68332__) || defined(mc68332)
+#define MACHINE_STATE_m68010_up
+#endif
#ifdef MOTOROLA
+#if defined(__mcf5200__)
#define MACHINE_STATE_SAVE(id) \
- if (TARGET_5200) \
{ \
asm ("sub.l 20,%sp"); \
asm ("movm.l &0x0303,4(%sp)"); \
asm ("move.w %ccr,%d0"); \
asm ("movm.l &0x0001,(%sp)"); \
- } \
- else \
+ }
+#else /* !__mcf5200__ */
+#if defined(MACHINE_STATE_m68010_up)
+#define MACHINE_STATE_SAVE(id) \
{ \
asm ("move.w %ccr,-(%sp)"); \
asm ("movm.l &0xc0c0,-(%sp)"); \
}
-#else
+#else /* !MACHINE_STATE_m68010_up */
+#define MACHINE_STATE_SAVE(id) \
+ { \
+ asm ("move.w %sr,-(%sp)"); \
+ asm ("movm.l &0xc0c0,-(%sp)"); \
+ }
+#endif /* MACHINE_STATE_m68010_up */
+#endif /* __mcf5200__ */
+#else /* !MOTOROLA */
+#if defined(__mcf5200__)
#define MACHINE_STATE_SAVE(id) \
- if (TARGET_5200) \
{ \
asm ("subl 20,sp"); \
asm ("movml d0/d1/a0/a1,sp@(4)"); \
asm ("movew cc,d0"); \
asm ("movml d0,sp@"); \
- } \
- else \
+ }
+#else /* !__mcf5200__ */
+#if defined(MACHINE_STATE_m68010_up)
+#define MACHINE_STATE_SAVE(id) \
{ \
asm ("movew cc,sp@-"); \
asm ("moveml d0/d1/a0/a1,sp@-"); \
}
-#endif
+#else /* !MACHINE_STATE_m68010_up */
+#define MACHINE_STATE_SAVE(id) \
+ { \
+ asm ("movew sr,sp@-"); \
+ asm ("moveml d0/d1/a0/a1,sp@-"); \
+ }
+#endif /* MACHINE_STATE_m68010_up */
+#endif /* __mcf5200__ */
+#endif /* MOTOROLA */
/* Restore all registers saved by MACHINE_STATE_SAVE. */
#ifdef MOTOROLA
+#if defined(__mcf5200__)
#define MACHINE_STATE_RESTORE(id) \
- if (TARGET_5200) \
{ \
asm ("movm.l (%sp),&0x0001"); \
asm ("move.w %d0,%ccr"); \
asm ("movm.l 4(%sp),&0x0303"); \
asm ("add.l 20,%sp"); \
- } \
- else \
+ }
+#else /* !__mcf5200__ */
+#define MACHINE_STATE_RESTORE(id) \
{ \
asm ("movm.l (%sp)+,&0x0303"); \
asm ("move.w (%sp)+,%ccr"); \
}
-#else
+#endif /* __mcf5200__ */
+#else /* !MOTOROLA */
+#if defined(__mcf5200__)
#define MACHINE_STATE_RESTORE(id) \
- if (TARGET_5200) \
{ \
asm ("movml sp@,d0"); \
asm ("movew d0,cc"); \
asm ("movml sp@(4),d0/d1/a0/a1"); \
asm ("addl 20,sp"); \
- } \
- else \
+ }
+#else /* !__mcf5200__ */
+#define MACHINE_STATE_RESTORE(id) \
{ \
asm ("moveml sp@+,d0/d1/a0/a1"); \
asm ("movew sp@+,cc"); \
}
-#endif
+#endif /* __mcf5200__ */
+#endif /* MOTOROLA */
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
the stack pointer does not matter. The value is tested only in