Annotation of qemu/roms/ipxe/src/arch/i386/include/setjmp.h, revision 1.1.1.1

1.1       root        1: #ifndef ETHERBOOT_SETJMP_H
                      2: #define ETHERBOOT_SETJMP_H
                      3: 
                      4: FILE_LICENCE ( GPL2_OR_LATER );
                      5: 
                      6: #include <stdint.h>
                      7: #include <realmode.h>
                      8: 
                      9: /** A jump buffer */
                     10: typedef struct {
                     11:        uint32_t retaddr;
                     12:        uint32_t ebx;
                     13:        uint32_t esp;
                     14:        uint32_t ebp;
                     15:        uint32_t esi;
                     16:        uint32_t edi;
                     17: } jmp_buf[1];
                     18: 
                     19: /** A real-mode-extended jump buffer */
                     20: typedef struct {
                     21:        jmp_buf env;
                     22:        uint16_t rm_ss;
                     23:        uint16_t rm_sp;
                     24: } rmjmp_buf[1];
                     25: 
                     26: extern int __asmcall setjmp ( jmp_buf env );
                     27: extern void __asmcall longjmp ( jmp_buf env, int val );
                     28: 
                     29: #define rmsetjmp( _env ) ( {                   \
                     30:        (_env)->rm_ss = rm_ss;                  \
                     31:        (_env)->rm_sp = rm_sp;                  \
                     32:        setjmp ( (_env)->env ); } )             \
                     33: 
                     34: #define rmlongjmp( _env, _val ) do {           \
                     35:        rm_ss = (_env)->rm_ss;                  \
                     36:        rm_sp = (_env)->rm_sp;                  \
                     37:        longjmp ( (_env)->env, (_val) );        \
                     38:        } while ( 0 )
                     39: 
                     40: #endif /* ETHERBOOT_SETJMP_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.