1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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