1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH 4 * (C) Copyright 2016 Alexander Graf <agraf@suse.de> 5 */ 6 7 #ifndef _SETJMP_H_ 8 #define _SETJMP_H_ 1 9 10 /* 11 * This really should be opaque, but the EFI implementation wrongly 12 * assumes that a 'struct jmp_buf_data' is defined. 13 */ 14 struct jmp_buf_data { 15 #if defined(__aarch64__) 16 u64 regs[13]; 17 #else 18 u32 regs[10]; /* r4-r9, sl, fp, sp, lr */ 19 #endif 20 }; 21 22 typedef struct jmp_buf_data jmp_buf[1]; 23 24 int setjmp(jmp_buf jmp); 25 void longjmp(jmp_buf jmp, int ret); 26 27 #endif /* _SETJMP_H_ */ 28