summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/m68k/bits/setjmp.h
diff options
context:
space:
mode:
authorDavid McCullough <davidm@snapgear.com>2001-01-29 15:02:05 +0000
committerDavid McCullough <davidm@snapgear.com>2001-01-29 15:02:05 +0000
commite9e69bd628e4495c975bb82dc3aabc536ae97329 (patch)
tree87766426bc73ba3c5388c18fe8acaf57b4d8a633 /libc/sysdeps/linux/m68k/bits/setjmp.h
parent5a2610fbeb4667ffac25551f5484b629707b996e (diff)
uClibc working with 2.0.x and 2.4.x m68k uClinux kernels, the PIC
stuff in crt0.S may not be quite right yet.
Diffstat (limited to 'libc/sysdeps/linux/m68k/bits/setjmp.h')
-rw-r--r--libc/sysdeps/linux/m68k/bits/setjmp.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/m68k/bits/setjmp.h b/libc/sysdeps/linux/m68k/bits/setjmp.h
index aa376a092..31a241380 100644
--- a/libc/sysdeps/linux/m68k/bits/setjmp.h
+++ b/libc/sysdeps/linux/m68k/bits/setjmp.h
@@ -44,3 +44,14 @@ typedef struct
containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address) \
((void *) (address) < (void *) (jmpbuf)->__sp)
+
+/* Simple version of sigsetjmp and siglongjmp */
+
+#define __sigsetjmp(env, savesigs) ((env)->__mask_was_saved = (savesigs), \
+ sigprocmask(SIG_SETMASK, 0, &(env)->__saved_mask), \
+ setjmp(&(env)->__jmpbuf))
+
+#define siglongjmp(env, val) (((env)->__mask_was_saved ? \
+ sigprocmask(SIG_SETMASK, &(env)->__saved_mask, 0) : 0), \
+ longjmp(&(env)->__jmpbuf, val))
+