about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-12-01 17:50:29 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-12-01 17:50:29 +0100
commit9f3ea84b574321fd59fa6c2670f5e6a0f88fc774 (patch)
treebc052d9c9c60d0ff3f507f8a11c1bf0919d4e3fa /src
parent3f007d2dbb2b0319d9c2ff4ef6dff10d77a9b6ab (diff)
downloadbox64-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-xsrc/include/debug.h1
-rwxr-xr-xsrc/librarian/library.c2
-rwxr-xr-xsrc/main.c16
-rw-r--r--src/tools/rcfile.c2
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)                                             \