summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/lm32/bits/setjmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/lm32/bits/setjmp.h')
-rw-r--r--libc/sysdeps/linux/lm32/bits/setjmp.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/lm32/bits/setjmp.h b/libc/sysdeps/linux/lm32/bits/setjmp.h
new file mode 100644
index 000000000..6798083bd
--- /dev/null
+++ b/libc/sysdeps/linux/lm32/bits/setjmp.h
@@ -0,0 +1,24 @@
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
+#ifndef _ASM
+typedef struct
+ {
+ int __regs[15]; /* callee-saved registers r11-r25 */
+ void *__gp; /* global pointer */
+ void *__fp; /* frame pointer */
+ void *__sp; /* stack pointer */
+ void *__ra; /* return address */
+ } __jmp_buf[1];
+#endif
+
+/* Test if longjmp to JMPBUF would unwind the frame
+ containing a local variable at ADDRESS. */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *) (address) < (void *) (jmpbuf)[0].__sp)
+
+#endif