summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/m68k/setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/m68k/setjmp.S')
-rw-r--r--libc/sysdeps/linux/m68k/setjmp.S101
1 files changed, 18 insertions, 83 deletions
diff --git a/libc/sysdeps/linux/m68k/setjmp.S b/libc/sysdeps/linux/m68k/setjmp.S
index d104d78ac..d7ca5dd6d 100644
--- a/libc/sysdeps/linux/m68k/setjmp.S
+++ b/libc/sysdeps/linux/m68k/setjmp.S
@@ -1,88 +1,23 @@
-/* These are predefined by new versions of GNU cpp. */
-#ifndef __USER_LABEL_PREFIX__
-#define __USER_LABEL_PREFIX__ _
-#endif
-
-#ifndef __REGISTER_PREFIX__
-#define __REGISTER_PREFIX__
-#endif
-
-/* ANSI concatenation macros. */
-
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-
-/* Use the right prefix for global labels. */
-
-#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+/* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */
+/* This file is released under the LGPL, any version you like */
-/* Use the right prefix for registers. */
+#define _ASM
+#define _SETJMP_H
+#include <bits/setjmp.h>
-#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
+.globl __sigsetjmp;
+.type __sigsetjmp,@function
+.align 4;
-#define d0 REG (d0)
-#define d1 REG (d1)
-#define d2 REG (d2)
-#define d3 REG (d3)
-#define d4 REG (d4)
-#define d5 REG (d5)
-#define d6 REG (d6)
-#define d7 REG (d7)
-#define a0 REG (a0)
-#define a1 REG (a1)
-#define a2 REG (a2)
-#define a3 REG (a3)
-#define a4 REG (a4)
-#define a5 REG (a5)
-#define a6 REG (a6)
-#define fp REG (fp)
-#define sp REG (sp)
-
-.global SYM (__setjmp)
-.global SYM (__longjmp)
-
-SYM (__setjmp):
- moveal sp@(4),a0
- movel sp@(0),a0@(12)
- movel sp,a0@(8)
- moveml d2-d7/a2-a6,a0@(20)
- clrl d0
- rts
-
-SYM (__longjmp):
- moveal sp@(4),a0
- movel sp@(8),d0
- bne 1f
- movel #1,d0
-1:
- moveml a0@(20),d2-d7/a2-a6
- moveal a0@(8),sp
- movel a0@(12),sp@
- rts
-
-#ifdef M68881
-.global SYM (__setjmp_68881)
-.global SYM (__longjmp_68881)
-
-SYM (__setjmp_68881):
- moveal sp@(4),a0
- movel sp@(0),a0@(12)
- movel sp,a0@(8)
- moveml d2-d7/a2-a6,a0@(20)
- fmovemx fp2-fp7,a0@(64)
- clrl d0
- rts
-
-SYM (__longjmp_68881):
- moveal sp@(4),a0
- fmovemx a0@(64),fp2-fp7
- movel sp@(8),d0
- bne 1f
- movel #1,d0
-1:
- moveml a0@(20),d2-d7/a2-a6
- moveal a0@(8),sp
- movel a0@(12),sp@
- rts
+__sigsetjmp:
+ moveal %sp@(4), %a0
+ movel %sp@(0), %a0@(JB_PC)
+ moveml %d2-%d7/%a2-%a7, %a0@(JB_REGS)
+#if defined(__HAVE_68881__) || defined(__HAVE_FPU__)
+ fmovemx %fp2-%fp7, %a0@(JB_FPREGS)
#endif
+ clrl %d0
+ lea __sigjmp_save-.-8, %a0
+ jmp 0(%pc, %a0)
+