longjmp.h 385 B

12345678910111213141516171819202122
  1. #ifndef __UML_LONGJMP_H
  2. #define __UML_LONGJMP_H
  3. #include "sysdep/archsetjmp.h"
  4. #include "os.h"
  5. extern int setjmp(jmp_buf);
  6. extern void longjmp(jmp_buf, int);
  7. #define UML_LONGJMP(buf, val) do { \
  8. longjmp(*buf, val); \
  9. } while(0)
  10. #define UML_SETJMP(buf) ({ \
  11. int n, enable; \
  12. enable = get_signals(); \
  13. n = setjmp(*buf); \
  14. if(n != 0) \
  15. set_signals(enable); \
  16. n; })
  17. #endif