diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-12-01 17:50:29 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-12-01 17:50:29 +0100 |
| commit | 9f3ea84b574321fd59fa6c2670f5e6a0f88fc774 (patch) | |
| tree | bc052d9c9c60d0ff3f507f8a11c1bf0919d4e3fa /src | |
| parent | 3f007d2dbb2b0319d9c2ff4ef6dff10d77a9b6ab (diff) | |
| download | box64-9f3ea84b574321fd59fa6c2670f5e6a0f88fc774.tar.gz box64-9f3ea84b574321fd59fa6c2670f5e6a0f88fc774.zip | |
[DYNAREC] Added BOX64_DYNAREC_BLEEDING_EDGE to control detection of MonoBleedingEdge (and disable that for 3dSen)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/debug.h | 1 | ||||
| -rwxr-xr-x | src/librarian/library.c | 2 | ||||
| -rwxr-xr-x | src/main.c | 16 | ||||
| -rw-r--r-- | src/tools/rcfile.c | 2 |
4 files changed, 17 insertions, 4 deletions
diff --git a/src/include/debug.h b/src/include/debug.h index 815597a7..c3a6a35a 100755 --- a/src/include/debug.h +++ b/src/include/debug.h @@ -20,6 +20,7 @@ extern int box64_dynarec_fastnan; extern int box64_dynarec_x87double; extern int box64_dynarec_safeflags; extern int box64_dynarec_callret; +extern int box64_dynarec_bleeding_edge; extern int box64_dynarec_hotpage; #ifdef ARM64 extern int arm64_asimd; diff --git a/src/librarian/library.c b/src/librarian/library.c index e58cd1d0..f5561674 100755 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -301,7 +301,7 @@ static int loadEmulatedLib(const char* libname, library_t *lib, box64context_t* printf_log(LOG_INFO, "Using emulated %s\n", libname); #ifdef DYNAREC - if(libname && strstr(libname, "libmonobdwgc-2.0.so")) { + if(libname && box64_dynarec_bleeding_edge && strstr(libname, "libmonobdwgc-2.0.so")) { printf_log(LOG_INFO, "MonoBleedingEdge detected, disable Dynarec BigBlock and enable Dynarec StrongMem\n"); box64_dynarec_bigblock = 0; box64_dynarec_strongmem = 1; diff --git a/src/main.c b/src/main.c index 13d39784..e5d2c5d7 100755 --- a/src/main.c +++ b/src/main.c @@ -53,6 +53,7 @@ int box64_dynarec_fastnan = 1; int box64_dynarec_safeflags = 1; int box64_dynarec_callret = 0; int box64_dynarec_hotpage = 16; +int box64_dynarec_bleeding_edge = 1; uintptr_t box64_nodynarec_start = 0; uintptr_t box64_nodynarec_end = 0; #ifdef ARM64 @@ -488,9 +489,18 @@ void LoadLogEnv() if(p[0]>='0' && p[0]<='1') box64_dynarec_callret = p[0]-'0'; } - if(!box64_dynarec_callret) + if(box64_dynarec_callret) printf_log(LOG_INFO, "Dynarec will optimize CALL/RET\n"); } + p = getenv("BOX64_DYNAREC_BLEEDING_EDGE"); + if(p) { + if(strlen(p)==1) { + if(p[0]>='0' && p[0]<='1') + box64_dynarec_bleeding_edge = p[0]-'0'; + } + if(!box64_dynarec_bleeding_edge) + printf_log(LOG_INFO, "Dynarec will not detect MonoBleedingEdge\n"); + } p = getenv("BOX64_DYNAREC_HOTPAGE"); if(p) { int val = -1; @@ -498,8 +508,8 @@ void LoadLogEnv() if(val>=0) box64_dynarec_hotpage = val; } - if(!box64_dynarec_hotpage) - printf_log(LOG_INFO, "Dynarec will have HotPage tagged for %d ticks\n", box64_dynarec_hotpage); + if(box64_dynarec_hotpage) + printf_log(LOG_INFO, "Dynarec will have HotPage tagged for %d attempts\n", box64_dynarec_hotpage); else printf_log(LOG_INFO, "Dynarec will not tag HotPage\n"); } diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c index b20a88fc..b33906e5 100644 --- a/src/tools/rcfile.c +++ b/src/tools/rcfile.c @@ -76,6 +76,7 @@ ENTRYBOOL(BOX64_DYNAREC_X87DOUBLE, box64_dynarec_x87double) \ ENTRYBOOL(BOX64_DYNAREC_FASTNAN, box64_dynarec_fastnan) \ ENTRYINT(BOX64_DYNAREC_SAFEFLAGS, box64_dynarec_safeflags, 0, 2, 2) \ ENTRYBOOL(BOX64_DYNAREC_CALLRET, box64_dynarec_callret) \ +ENTRYBOOL(BOX64_DYNAREC_BLEEDING_EDGE, box64_dynarec_bleeding_edge) \ ENTRYINT(BOX64_DYNAREC_HOTPAGE, box64_dynarec_hotpage, 0, 255, 8) \ ENTRYSTRING_(BOX64_NODYNAREC, box64_nodynarec) \ @@ -90,6 +91,7 @@ IGNORE(BOX64_DYNAREC_X87DOUBLE) \ IGNORE(BOX64_DYNAREC_FASTNAN) \ IGNORE(BOX64_DYNAREC_SAFEFLAGS) \ IGNORE(BOX64_DYNAREC_CALLRET) \ +IGNORE(BOX64_DYNAREC_BLEEDING_EDGE) \ IGNORE(BOX64_DYNAREC_HOTPAGE) \ IGNORE(BOX64_NODYNAREC) \ |