aboutsummaryrefslogtreecommitdiff
path: root/arch/um/include/shared/longjmp.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-08-17 13:48:37 -0400
committerH. Peter Anvin <hpa@zytor.com>2008-10-22 22:55:19 -0700
commit8569c9140bd41089f9b6be8837ca421102714a90 (patch)
treecd289b322b215fe2ca2530aa320febfd99388d7f /arch/um/include/shared/longjmp.h
parent2515ddc6db8eb49a79f0fe5e67ff09ac7c81eab4 (diff)
x86, um: take arch/um/include/* out of the way
We can't just plop asm/* into it - userland helpers are built with it in search path and seeing asm/* show up there suddenly would be a bad idea. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/um/include/shared/longjmp.h')
-rw-r--r--arch/um/include/shared/longjmp.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/um/include/shared/longjmp.h b/arch/um/include/shared/longjmp.h
new file mode 100644
index 00000000000..e860bc5848e
--- /dev/null
+++ b/arch/um/include/shared/longjmp.h
@@ -0,0 +1,23 @@
+#ifndef __UML_LONGJMP_H
+#define __UML_LONGJMP_H
+
+#include "sysdep/archsetjmp.h"
+#include "os.h"
+
+extern int setjmp(jmp_buf);
+extern void longjmp(jmp_buf, int);
+
+#define UML_LONGJMP(buf, val) do { \
+ longjmp(*buf, val); \
+} while(0)
+
+#define UML_SETJMP(buf) ({ \
+ int n; \
+ volatile int enable; \
+ enable = get_signals(); \
+ n = setjmp(*buf); \
+ if(n != 0) \
+ set_signals(enable); \
+ n; })
+
+#endif