00001
00009
00010
00011
00012
00013 #ifndef __UTIL_INCLUDE_ARCH_X86_L4API_L4V2_SETJMP_H_
00014 #define __UTIL_INCLUDE_ARCH_X86_L4API_L4V2_SETJMP_H_
00015 #include <l4/sys/types.h>
00016 #include <l4/sys/syscalls.h>
00017 #include <l4/sys/compiler.h>
00018
00019 EXTERN_C_BEGIN
00020
00021 typedef struct{
00022 l4_umword_t ebx;
00023 l4_umword_t esi;
00024 l4_umword_t edi;
00025 l4_umword_t ebp;
00026 l4_umword_t esp;
00027 l4_umword_t eip;
00028 l4_umword_t eip_caller;
00029 l4_umword_t eflags;
00030 l4_umword_t stack[40];
00031 } l4_thread_jmp_buf_s;
00032 typedef int l4_thread_jmp_buf[sizeof(l4_thread_jmp_buf_s)/sizeof(l4_umword_t)];
00033
00034 typedef union{
00035 l4_thread_jmp_buf_s s;
00036 l4_thread_jmp_buf raw;
00037 } l4_thread_jmp_buf_u;
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 extern int l4_thread_setjmp(l4_thread_jmp_buf env);
00050
00064 void l4_thread_longjmp(l4_threadid_t thread, l4_thread_jmp_buf env, int val);
00065
00066 EXTERN_C_END
00067
00068 #endif