diff options
Diffstat (limited to 'roms/u-boot/arch/sandbox/include/asm/setjmp.h')
-rw-r--r-- | roms/u-boot/arch/sandbox/include/asm/setjmp.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/roms/u-boot/arch/sandbox/include/asm/setjmp.h b/roms/u-boot/arch/sandbox/include/asm/setjmp.h new file mode 100644 index 000000000..001c7ea32 --- /dev/null +++ b/roms/u-boot/arch/sandbox/include/asm/setjmp.h @@ -0,0 +1,35 @@ +/* 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_ */ |