| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * (C) 2018 Google, Inc | |
| * Written by Simon Glass <sjg@chromium.org> | |
| */ | |
| #ifndef _SETJMP_H_ | |
| #define _SETJMP_H_ | |
| struct jmp_buf_data { | |
| /* | |
| * We're not sure how long this should be: | |
| * | |
| * amd64: 200 bytes | |
| * arm64: 392 bytes | |
| * armhf: 392 bytes | |
| * | |
| * So allow space for all of those, plus some extra. | |
| * We don't need to worry about 16-byte alignment, since this does not | |
| * run on Windows. | |
| */ | |
| ulong data[128]; | |
| }; | |
| typedef struct jmp_buf_data jmp_buf[1]; | |
| /* | |
| * We have to directly link with the system versions of | |
| * setjmp/longjmp, because setjmp must not return as otherwise | |
| * the stack may become invalid. | |
| */ | |
| int setjmp(jmp_buf jmp); | |
| __noreturn void longjmp(jmp_buf jmp, int ret); | |
| #endif /* _SETJMP_H_ */ |