| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 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 setjmp(jmp_buf); | 
|  | 9 | extern void longjmp(jmp_buf, int); | 
|  | 10 |  | 
|  | 11 | #define UML_LONGJMP(buf, val) do { \ | 
|  | 12 | longjmp(*buf, val);	\ | 
|  | 13 | } while(0) | 
|  | 14 |  | 
|  | 15 | #define UML_SETJMP(buf) ({ \ | 
|  | 16 | int n;	   \ | 
|  | 17 | volatile int enable;	\ | 
|  | 18 | enable = get_signals(); \ | 
|  | 19 | n = setjmp(*buf); \ | 
|  | 20 | if(n != 0) \ | 
|  | 21 | set_signals_trace(enable); \ | 
|  | 22 | n; }) | 
|  | 23 |  | 
|  | 24 | #endif |