GNU Linux-libre 6.9.1-gnu
[releases.git] / arch / um / include / shared / longjmp.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __UML_LONGJMP_H
3 #define __UML_LONGJMP_H
4
5 #include <sysdep/archsetjmp.h>
6 #include <os.h>
7
8 extern int signals_enabled;
9 extern int setjmp(jmp_buf);
10 extern void longjmp(jmp_buf, int);
11
12 #define UML_LONGJMP(buf, val) do { \
13         longjmp(*buf, val);     \
14 } while(0)
15
16 #define UML_SETJMP(buf) ({                              \
17         int n, enable;                                  \
18         enable = *(volatile int *)&signals_enabled;     \
19         n = setjmp(*buf);                               \
20         if(n != 0)                                      \
21                 um_set_signals_trace(enable);           \
22         n; })
23
24 #endif