iPXE
setjmp.h
Go to the documentation of this file.
00001 #ifndef _SETJMP_H
00002 #define _SETJMP_H
00003 
00004 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
00005 
00006 #include <stdint.h>
00007 
00008 /** A jump buffer */
00009 typedef struct {
00010         /** Saved return address */
00011         uint32_t retaddr;
00012         /** Saved stack pointer */
00013         uint32_t stack;
00014         /** Saved %ebx */
00015         uint32_t ebx;
00016         /** Saved %esi */
00017         uint32_t esi;
00018         /** Saved %edi */
00019         uint32_t edi;
00020         /** Saved %ebp */
00021         uint32_t ebp;
00022 } jmp_buf[1];
00023 
00024 extern int __asmcall __attribute__ (( returns_twice ))
00025 setjmp ( jmp_buf env );
00026 
00027 extern void __asmcall __attribute__ (( noreturn ))
00028 longjmp ( jmp_buf env, int val );
00029 
00030 #endif /* _SETJMP_H */