summaryrefslogtreecommitdiff
path: root/libc/include/setjmp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libc/include/setjmp.h')
-rw-r--r--libc/include/setjmp.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/libc/include/setjmp.h b/libc/include/setjmp.h
new file mode 100644
index 0000000..162743b
--- /dev/null
+++ b/libc/include/setjmp.h
@@ -0,0 +1,30 @@
+
+#ifndef __SETJMP_H
+#define __SETJMP_H
+
+#include <features.h>
+
+/*
+ * I know most systems use an array of ints here, but I prefer this - RDB
+ */
+
+typedef struct
+{
+ unsigned int pc;
+ unsigned int sp;
+ unsigned int bp;
+ unsigned int si;
+ unsigned int di;
+} jmp_buf[1];
+
+int _setjmp __P((jmp_buf env));
+void _longjmp __P((jmp_buf env, int rv));
+
+/* LATER: Seems GNU beat me to it, must be OK then :-)
+ * Humm, what's this about setjmp being a macro !?
+ * Ok, use the BSD names as normal use the ANSI as macros
+ */
+
+#define setjmp(a_env) _setjmp(a_env)
+#define longjmp(a_env, a_rv) _longjmp(a_env, a_rv)
+#endif