00001
00009
00010
00011
00012
00013 #ifndef __UTIL_INCLUDE_ARCH_AMD64_L4API_L4V2_SETJMP_H_
00014 #define __UTIL_INCLUDE_ARCH_AMd64_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 r8;
00023 l4_umword_t r9;
00024 l4_umword_t r10;
00025 l4_umword_t r11;
00026 l4_umword_t r12;
00027 l4_umword_t r13;
00028 l4_umword_t r14;
00029 l4_umword_t r15;
00030 l4_umword_t rbx;
00031 l4_umword_t rsi;
00032 l4_umword_t rbp;
00033 l4_umword_t rsp;
00034 l4_umword_t rip;
00035 l4_umword_t rip_caller;
00036 l4_umword_t rflags;
00037 l4_umword_t stack[40];
00038 } l4_thread_jmp_buf_s;
00039 typedef int l4_thread_jmp_buf[sizeof(l4_thread_jmp_buf_s)/sizeof(l4_umword_t)];
00040
00041 typedef union{
00042 l4_thread_jmp_buf_s s;
00043 l4_thread_jmp_buf raw;
00044 } l4_thread_jmp_buf_u;
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 L4_CV int l4_thread_setjmp(l4_thread_jmp_buf env);
00057
00071 L4_CV void l4_thread_longjmp(l4_threadid_t thread, l4_thread_jmp_buf env, int val);
00072
00073 EXTERN_C_END
00074
00075 #endif