183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0 */ 2f822403fSSimon Glass /* 3f822403fSSimon Glass * Written by H. Peter Anvin <hpa@zytor.com> 4f822403fSSimon Glass * Brought in from Linux v4.4 and modified for U-Boot 5f822403fSSimon Glass * From Linux arch/um/sys-i386/setjmp.S 6f822403fSSimon Glass */ 7f822403fSSimon Glass 8f822403fSSimon Glass #ifndef __setjmp_h 9f822403fSSimon Glass #define __setjmp_h 10f822403fSSimon Glass 11*96492732SIvan Gorinov #ifdef CONFIG_X86_64 12*96492732SIvan Gorinov 13*96492732SIvan Gorinov struct jmp_buf_data { 14*96492732SIvan Gorinov unsigned long __rip; 15*96492732SIvan Gorinov unsigned long __rsp; 16*96492732SIvan Gorinov unsigned long __rbp; 17*96492732SIvan Gorinov unsigned long __rbx; 18*96492732SIvan Gorinov unsigned long __r12; 19*96492732SIvan Gorinov unsigned long __r13; 20*96492732SIvan Gorinov unsigned long __r14; 21*96492732SIvan Gorinov unsigned long __r15; 22*96492732SIvan Gorinov }; 23*96492732SIvan Gorinov 24*96492732SIvan Gorinov #else 25*96492732SIvan Gorinov 26f822403fSSimon Glass struct jmp_buf_data { 27f822403fSSimon Glass unsigned int __ebx; 28f822403fSSimon Glass unsigned int __esp; 29f822403fSSimon Glass unsigned int __ebp; 30f822403fSSimon Glass unsigned int __esi; 31f822403fSSimon Glass unsigned int __edi; 32f822403fSSimon Glass unsigned int __eip; 33f822403fSSimon Glass }; 34f822403fSSimon Glass 35*96492732SIvan Gorinov #endif 36*96492732SIvan Gorinov 37f822403fSSimon Glass int setjmp(struct jmp_buf_data *jmp_buf); 38f822403fSSimon Glass void longjmp(struct jmp_buf_data *jmp_buf, int val); 39f822403fSSimon Glass 40f822403fSSimon Glass #endif 41