diff options
author | David McCullough <davidm@snapgear.com> | 2002-02-06 14:35:12 +0000 |
---|---|---|
committer | David McCullough <davidm@snapgear.com> | 2002-02-06 14:35:12 +0000 |
commit | 321d2f0e5667fd3d10e9cd41aa80818bad71ebdc (patch) | |
tree | 390fead2a484af74aa8d9b8360da12b46197bdfa /libc/sysdeps/linux/m68k/__longjmp.S | |
parent | e39dd6837ce96595e681b955cedfd5b6d6888ba4 (diff) |
Add in clone (untested)
Fix up setjmp/longjmp which were quite broken not withstanding
all the new versions.
Needs a little more test time before I'll trust this code totally.
Diffstat (limited to 'libc/sysdeps/linux/m68k/__longjmp.S')
-rw-r--r-- | libc/sysdeps/linux/m68k/__longjmp.S | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/m68k/__longjmp.S b/libc/sysdeps/linux/m68k/__longjmp.S new file mode 100644 index 000000000..d218f2ef5 --- /dev/null +++ b/libc/sysdeps/linux/m68k/__longjmp.S @@ -0,0 +1,24 @@ + +/* Copyright (C) 2002, David McCullough <davidm@snapgear.com> */ +/* This file is released under the LGPL, any version you like */ + +#define _ASM +#define _SETJMP_H +#include <bits/setjmp.h> + +.globl __longjmp; +.type __longjmp,@function +.align 4; \ +__longjmp: + moveal %sp@(4), %a0 + movel %sp@(8), %d0 + bne 1f + movel #1, %d0 +1: + moveml %a0@(JB_REGS), %d2-%d7/%a2-%a7 +#if defined(__HAVE_68881__) || defined(__HAVE_FPU__) + fmovemx %a0@(JB_FPREGS), %fp2-%fp7 +#endif + movel %a0@(JB_PC), %sp@ + rts + |