mirror of https://github.com/ipxe/ipxe.git
31 lines
570 B
C
31 lines
570 B
C
#ifndef _SETJMP_H
|
|
#define _SETJMP_H
|
|
|
|
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
|
|
|
#include <stdint.h>
|
|
|
|
/** A jump buffer */
|
|
typedef struct {
|
|
/** Saved return address */
|
|
uint32_t retaddr;
|
|
/** Saved stack pointer */
|
|
uint32_t stack;
|
|
/** Saved %ebx */
|
|
uint32_t ebx;
|
|
/** Saved %esi */
|
|
uint32_t esi;
|
|
/** Saved %edi */
|
|
uint32_t edi;
|
|
/** Saved %ebp */
|
|
uint32_t ebp;
|
|
} jmp_buf[1];
|
|
|
|
extern int __asmcall __attribute__ (( returns_twice ))
|
|
setjmp ( jmp_buf env );
|
|
|
|
extern void __asmcall __attribute__ (( noreturn ))
|
|
longjmp ( jmp_buf env, int val );
|
|
|
|
#endif /* _SETJMP_H */
|