diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-10-19 19:06:38 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-10-19 19:06:38 +0200 |
| commit | 0833a07a65da8e786041666a815f2df87dccaa7e (patch) | |
| tree | 9dafa7e7c7ae9358bafab3ff368866d6175267e9 /src | |
| parent | aa4dbe72c9f7a6297a68ef4edce70a105cbd0f4c (diff) | |
| download | box64-0833a07a65da8e786041666a815f2df87dccaa7e.tar.gz box64-0833a07a65da8e786041666a815f2df87dccaa7e.zip | |
[DYNAREC] Introduce BOX4_DYNAREC_INTERP_SIGNAL and 1 profile that needs it
Diffstat (limited to 'src')
| -rw-r--r-- | src/include/env.h | 1 | ||||
| -rw-r--r-- | src/libtools/signal32.c | 2 | ||||
| -rw-r--r-- | src/libtools/signals.c | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/src/include/env.h b/src/include/env.h index 6b793881..546fc7fe 100644 --- a/src/include/env.h +++ b/src/include/env.h @@ -70,6 +70,7 @@ extern char* ftrace_name; BOOLEAN(BOX64_DYNAREC_WAIT, dynarec_wait, 1, 1) \ INTEGER(BOX64_DYNAREC_WEAKBARRIER, dynarec_weakbarrier, 1, 0, 2, 1) \ INTEGER(BOX64_DYNAREC_X87DOUBLE, dynarec_x87double, 0, 0, 2, 1) \ + BOOLEAN(BOX64_DYNAREC_INTERP_SIGNAL, dynarec_interp_signal, 0, 1) \ STRING(BOX64_EMULATED_LIBS, emulated_libs, 0) \ STRING(BOX64_ENV, env, 0) \ STRING(BOX64_ENV1, env1, 0) \ diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c index 99e09434..d088a9e6 100644 --- a/src/libtools/signal32.c +++ b/src/libtools/signal32.c @@ -699,7 +699,7 @@ void my_sigactionhandler_oldcode_32(x64emu_t* emu, int32_t sig, int simple, sigi int dynarec = 0; #ifdef DYNAREC if(sig!=X64_SIGSEGV && !(Locks&is_dyndump_locked) && !(Locks&is_memprot_locked)) - dynarec = 1; + dynarec = BOX64ENV(dynarec_interp_signal)?0:1; #endif ret = RunFunctionHandler32(&exits, dynarec, sigcontext, my_context->signals[info2->si_signo], 3, info2->si_signo, info2, sigcontext); // restore old value from emu diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 4bb29eaa..a05b6491 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1147,7 +1147,7 @@ void my_sigactionhandler_oldcode_64(x64emu_t* emu, int32_t sig, int simple, sigi int dynarec = 0; #ifdef DYNAREC if(!(sig==X64_SIGSEGV || (Locks&is_dyndump_locked) || (Locks&is_memprot_locked))) - dynarec = 1; + dynarec = BOX64ENV(dynarec_interp_signal)?0:1; #endif ret = RunFunctionHandler(emu, &exits, dynarec, sigcontext, my_context->signals[info2->si_signo], 3, info2->si_signo, info2, sigcontext); // restore old value from emu |