iPXE
rmsetjmp.h
Go to the documentation of this file.
1#ifndef _RMSETJMP_H
2#define _RMSETJMP_H
3
4FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
5
6#include <setjmp.h>
7#include <realmode.h>
8
9/** A real-mode-extended jump buffer */
10typedef struct {
11 /** Jump buffer */
13 /** Real-mode stack pointer */
15} rmjmp_buf[1];
16
17#define rmsetjmp( _env ) ( { \
18 (_env)->rm_stack.segment = rm_ss; \
19 (_env)->rm_stack.offset = rm_sp; \
20 setjmp ( (_env)->env ); } ) \
21
22#define rmlongjmp( _env, _val ) do { \
23 rm_ss = (_env)->rm_stack.segment; \
24 rm_sp = (_env)->rm_stack.offset; \
25 longjmp ( (_env)->env, (_val) ); \
26 } while ( 0 )
27
28#endif /* _RMSETJMP_H */
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
struct segoff segoff_t
Definition registers.h:196
A jump buffer.
Definition setjmp.h:9
A real-mode-extended jump buffer.
Definition rmsetjmp.h:10
segoff_t rm_stack
Real-mode stack pointer.
Definition rmsetjmp.h:14
jmp_buf env
Jump buffer.
Definition rmsetjmp.h:12