diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/dynablock.c | 13 | ||||
| -rw-r--r-- | src/dynarec/dynarec_native.c | 4 | ||||
| -rw-r--r-- | src/include/dynablock.h | 1 | ||||
| -rw-r--r-- | src/libtools/signals.c | 1 |
4 files changed, 5 insertions, 14 deletions
diff --git a/src/dynarec/dynablock.c b/src/dynarec/dynablock.c index d603fdd9..28906f96 100644 --- a/src/dynarec/dynablock.c +++ b/src/dynarec/dynablock.c @@ -221,16 +221,6 @@ void cancelFillBlock() LongJmp(GET_JUMPBUFF(dynarec_jmpbuf), 1); } -#ifndef WIN32 -static int critical_filled = 0; -static sigset_t critical_prot = {0}; -sigset_t old_sig = {0}; -#endif - -void cancelFillBlockCriticalSection() -{ - pthread_sigmask(SIG_SETMASK, &old_sig, NULL); -} /* return NULL if block is not found / cannot be created. Don't create if create==0 @@ -248,6 +238,9 @@ static dynablock_t* internalDBGetBlock(x64emu_t* emu, uintptr_t addr, uintptr_t } #ifndef WIN32 + static int critical_filled = 0; + static sigset_t critical_prot = {0}; + sigset_t old_sig = {0}; if(!critical_filled) { critical_filled = 1; sigfillset(&critical_prot); diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 961ba441..e73870c5 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -493,10 +493,8 @@ void CancelBlock64(int need_lock) } current_helper = NULL; redundant_helper = NULL; - if(need_lock) { + if(need_lock) mutex_unlock(&my_context->mutex_dyndump); - cancelFillBlockCriticalSection(); - } } uintptr_t native_pass0(dynarec_native_t* dyn, uintptr_t addr, int alternate, int is32bits, int inst_max); diff --git a/src/include/dynablock.h b/src/include/dynablock.h index 42bf34b5..650e18cd 100644 --- a/src/include/dynablock.h +++ b/src/include/dynablock.h @@ -20,7 +20,6 @@ dynablock_t* DBAlternateBlock(x64emu_t* emu, uintptr_t addr, uintptr_t filladdr, // for use in signal handler void cancelFillBlock(void); -void cancelFillBlockCriticalSection(void); // clear instruction cache on a range void ClearCache(void* start, size_t len); diff --git a/src/libtools/signals.c b/src/libtools/signals.c index a05b6491..fcf7e7e9 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1568,6 +1568,7 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx) if(Locks & is_dyndump_locked) CancelBlock64(1); emu->test.clean = 0; + // will restore unblocked Signal flags too #ifdef ANDROID siglongjmp(*(JUMPBUFF*)emu->jmpbuf, 2); #else |