aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/m68k/bsd-_setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/m68k/bsd-_setjmp.S')
-rw-r--r--sysdeps/m68k/bsd-_setjmp.S12
1 files changed, 9 insertions, 3 deletions
diff --git a/sysdeps/m68k/bsd-_setjmp.S b/sysdeps/m68k/bsd-_setjmp.S
index a0b6393..69aa7de 100644
--- a/sysdeps/m68k/bsd-_setjmp.S
+++ b/sysdeps/m68k/bsd-_setjmp.S
@@ -26,17 +26,23 @@ Cambridge, MA 02139, USA. */
#ifdef MOTOROLA_SYNTAX
#define d0 %d0
#define d1 %d1
-#define PUSH(reg) move.l reg, -(%esp)
-#define POP(reg) move.l (%esp)+, reg
+#define PUSH(reg) move.l reg, -(%sp)
+#define POP(reg) move.l (%sp)+, reg
+#define PUSH0 clr.l -(%sp)
#else
#define PUSH(reg) movel reg, sp@-
#define POP(reg) movel sp@+, reg
+#define PUSH0 clrl sp@-
#endif
ENTRY (_setjmp)
POP (d0) /* Pop return PC. */
POP (d1) /* Pop jmp_buf argument. */
- PUSH (#0) /* Push second argument of zero. */
+ PUSH0 /* Push second argument of zero. */
PUSH (d1) /* Push back first argument. */
PUSH (d0) /* Push back return PC. */
+#ifdef PIC
+ bra.l C_SYMBOL_NAME (__sigsetjmp@PLTPC)
+#else
jmp C_SYMBOL_NAME (__sigsetjmp)
+#endif