summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/avr32/bits/setjmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/avr32/bits/setjmp.h')
-rw-r--r--libc/sysdeps/linux/avr32/bits/setjmp.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/avr32/bits/setjmp.h b/libc/sysdeps/linux/avr32/bits/setjmp.h
new file mode 100644
index 000000000..733a473d1
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/setjmp.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2004-2005 Atmel Corporation
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser General
+ * Public License. See the file "COPYING.LIB" in the main directory of this
+ * archive for more details.
+ */
+#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
+/*
+ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
+ * not saved.
+ */
+typedef int __jmp_buf[11];
+#endif
+
+#define __JMP_BUF_SP 4
+
+/* Test if longjmp to JMPBUF would unwind the frame containing a local
+ variable at ADDRESS. */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
+
+#endif /* _BITS_SETJMP_H */