diff options
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/myalign.h | 22 | ||||
| -rw-r--r-- | src/include/threads.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/include/myalign.h b/src/include/myalign.h index 247ea1b9..9293139a 100644 --- a/src/include/myalign.h +++ b/src/include/myalign.h @@ -214,4 +214,26 @@ void AlignSemidDs(void *dest, const void* source); uintptr_t getVArgs(x64emu_t* emu, int pos, uintptr_t* b, int N); +// longjmp / setjmp +typedef struct jump_buff_x64_s { + uint64_t save_rbx; + uint64_t save_rbp; + uint64_t save_r12; + uint64_t save_r13; + uint64_t save_r14; + uint64_t save_r15; + uint64_t save_rsp; + uint64_t save_rip; +} jump_buff_x64_t; + +typedef struct __jmp_buf_tag_s { + jump_buff_x64_t __jmpbuf; + int __mask_was_saved; + #ifdef ANDROID + sigset_t __saved_mask; + #else + __sigset_t __saved_mask; + #endif +} __jmp_buf_tag_t; + #endif //__MY_ALIGN__H_ diff --git a/src/include/threads.h b/src/include/threads.h index af58046b..8ed0e4c1 100644 --- a/src/include/threads.h +++ b/src/include/threads.h @@ -8,6 +8,7 @@ void CleanStackSize(box64context_t* context); void init_pthread_helper(void); void fini_pthread_helper(box64context_t* context); +void clean_current_emuthread(void); // prepare an "emuthread structure" in pet and return address of function pointer for a "thread creation routine" void* my_prepare_thread(x64emu_t *emu, void* f, void* arg, int ssize, void** pet); |