blob: 001c7ea322d2fae53ffb53c3e030920cc8ce5fe4 [file] [log] [blame] [edit]
/* 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_ */