diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-06-30 16:36:38 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-06-30 16:36:38 +0200 |
| commit | 2278438462e6f00e10ce9ace248505a8af0808d1 (patch) | |
| tree | 6c6f380282c110fced76d307d602faa3d25467b4 /src/tools/env.c | |
| parent | a942cef1eed4fba6447303e9f475940a0a4c1ed5 (diff) | |
| download | box64-2278438462e6f00e10ce9ace248505a8af0808d1.tar.gz box64-2278438462e6f00e10ce9ace248505a8af0808d1.zip | |
[DYNAREC] Refactor hotpage detection and dynarec_dirty 1 & 2. Also adjust some launcher/games flags
Diffstat (limited to 'src/tools/env.c')
| -rw-r--r-- | src/tools/env.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/tools/env.c b/src/tools/env.c index 4ce600c9..1680fdfe 100644 --- a/src/tools/env.c +++ b/src/tools/env.c @@ -815,7 +815,7 @@ done: #else #error meh! #endif -#define DYNAREC_VERSION SET_VERSION(0, 0, 2) +#define DYNAREC_VERSION SET_VERSION(0, 0, 3) typedef struct DynaCacheHeader_s { char sign[10]; //"DynaCache\0" @@ -928,6 +928,11 @@ void SerializeMmaplist(mapping_t* mapping) return; if((!mapping->env || !mapping->env->is_dynacache_overridden) && box64env.dynacache!=1) return; + // don't do serialize for program that needs dirty=1 + if(mapping->env && mapping->env->is_dynarec_dirty_overridden && mapping->env->dynarec_dirty) + return; + if((!mapping->env || !mapping->env->is_dynarec_dirty_overridden) && box64env.dynarec_dirty) + return; const char* folder = GetDynacacheFolder(mapping); if(!folder) return; // no folder, no serialize... const char* name = GetMmaplistName(mapping); @@ -1395,7 +1400,12 @@ int IsAddrNeedReloc(uintptr_t addr) uintptr_t start = env->nodynarec_start?env->nodynarec_start:box64env.nodynarec_start; if(end && addr>=start && addr<end) return 0; - #ifdef HAVE_TRACE + // don't do serialize for program that needs dirty=1 or 2 (maybe 1 is ok?) + if(env && env->is_dynarec_dirty_overridden && env->dynarec_dirty) + return 0; + if((!env || !env->is_dynarec_dirty_overridden) && box64env.dynarec_dirty) + return 0; + #ifdef HAVE_TRACE end = env->dynarec_test_end?env->dynarec_test_end:box64env.dynarec_test_end; start = env->dynarec_test_start?env->dynarec_test_start:box64env.dynarec_test_start; if(end && addr>=start && addr<end) |