0001
0002 #ifndef __UML_LONGJMP_H
0003 #define __UML_LONGJMP_H
0004
0005 #include <sysdep/archsetjmp.h>
0006 #include <os.h>
0007
0008 extern int signals_enabled;
0009 extern int setjmp(jmp_buf);
0010 extern void longjmp(jmp_buf, int);
0011
0012 #define UML_LONGJMP(buf, val) do { \
0013 longjmp(*buf, val); \
0014 } while(0)
0015
0016 #define UML_SETJMP(buf) ({ \
0017 int n, enable; \
0018 enable = *(volatile int *)&signals_enabled; \
0019 n = setjmp(*buf); \
0020 if(n != 0) \
0021 um_set_signals_trace(enable); \
0022 n; })
0023
0024 #endif