1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 28569c914SAl Viro #ifndef __UML_LONGJMP_H 38569c914SAl Viro #define __UML_LONGJMP_H 48569c914SAl Viro 537185b33SAl Viro #include <sysdep/archsetjmp.h> 637185b33SAl Viro #include <os.h> 78569c914SAl Viro 8fbb42e7fSJohannes Berg extern int signals_enabled; 98569c914SAl Viro extern int setjmp(jmp_buf); 108569c914SAl Viro extern void longjmp(jmp_buf, int); 118569c914SAl Viro 128569c914SAl Viro #define UML_LONGJMP(buf, val) do { \ 138569c914SAl Viro longjmp(*buf, val); \ 148569c914SAl Viro } while(0) 158569c914SAl Viro 168569c914SAl Viro #define UML_SETJMP(buf) ({ \ 17fbb42e7fSJohannes Berg int n, enable; \ 18fbb42e7fSJohannes Berg enable = *(volatile int *)&signals_enabled; \ 198569c914SAl Viro n = setjmp(*buf); \ 208569c914SAl Viro if(n != 0) \ 21*c3d5f267SJohannes Berg um_set_signals_trace(enable); \ 228569c914SAl Viro n; }) 238569c914SAl Viro 248569c914SAl Viro #endif 25