18569c914SAl Viro #ifndef __UML_LONGJMP_H 28569c914SAl Viro #define __UML_LONGJMP_H 38569c914SAl Viro 437185b33SAl Viro #include <sysdep/archsetjmp.h> 537185b33SAl Viro #include <os.h> 68569c914SAl Viro 78569c914SAl Viro extern int setjmp(jmp_buf); 88569c914SAl Viro extern void longjmp(jmp_buf, int); 98569c914SAl Viro 108569c914SAl Viro #define UML_LONGJMP(buf, val) do { \ 118569c914SAl Viro longjmp(*buf, val); \ 128569c914SAl Viro } while(0) 138569c914SAl Viro 148569c914SAl Viro #define UML_SETJMP(buf) ({ \ 158569c914SAl Viro int n; \ 168569c914SAl Viro volatile int enable; \ 178569c914SAl Viro enable = get_signals(); \ 188569c914SAl Viro n = setjmp(*buf); \ 198569c914SAl Viro if(n != 0) \ 208569c914SAl Viro set_signals(enable); \ 218569c914SAl Viro n; }) 228569c914SAl Viro 238569c914SAl Viro #endif 24