xref: /openbmc/u-boot/arch/x86/include/asm/setjmp.h (revision 4ac5df4b)
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