about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-05-07 15:54:37 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-05-07 15:54:37 +0200
commit47ecde75ec19a58f458c1131ec1968d11d58e7e1 (patch)
treeacc6ba0ff0c80e3a5dda29087921fbd784134fe4 /src
parent07948ff6a7356c61ee192b40b975db2792b53e1f (diff)
downloadbox64-47ecde75ec19a58f458c1131ec1968d11d58e7e1.tar.gz
box64-47ecde75ec19a58f458c1131ec1968d11d58e7e1.zip
[DYNAREC] Added BOX64_DYNAREC_MISSING to only print dynarec missing opcode
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_pass0.h2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_pass0.h2
-rwxr-xr-xsrc/include/debug.h1
-rwxr-xr-xsrc/main.c10
-rw-r--r--src/tools/rcfile.c2
5 files changed, 15 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_pass0.h b/src/dynarec/arm64/dynarec_arm64_pass0.h
index aabb3a9b..cd1cdc6a 100755
--- a/src/dynarec/arm64/dynarec_arm64_pass0.h
+++ b/src/dynarec/arm64/dynarec_arm64_pass0.h
@@ -40,7 +40,7 @@
 #define DEFAULT                         \
         --dyn->size;                    \
         *ok = -1;                       \
-        if(box64_dynarec_log>=LOG_INFO || box64_dynarec_dump) {\
+        if(box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing) {\
         dynarec_log(LOG_NONE, "%p: Dynarec stopped because of Opcode %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
         (void*)ip, PKip(0),             \
         PKip(1), PKip(2), PKip(3),      \
diff --git a/src/dynarec/rv64/dynarec_rv64_pass0.h b/src/dynarec/rv64/dynarec_rv64_pass0.h
index e2975eaa..debb052f 100644
--- a/src/dynarec/rv64/dynarec_rv64_pass0.h
+++ b/src/dynarec/rv64/dynarec_rv64_pass0.h
@@ -40,7 +40,7 @@
 #define DEFAULT                         \
         --dyn->size;                    \
         *ok = -1;                       \
-        if(box64_dynarec_log>=LOG_INFO || box64_dynarec_dump) {\
+        if(box64_dynarec_log>=LOG_INFO || box64_dynarec_dump || box64_dynarec_missing) {\
         dynarec_log(LOG_NONE, "%p: Dynarec stopped because of Opcode %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", \
         (void*)ip, PKip(0),             \
         PKip(1), PKip(2), PKip(3),      \
diff --git a/src/include/debug.h b/src/include/debug.h
index 6f448fc7..2d899beb 100755
--- a/src/include/debug.h
+++ b/src/include/debug.h
@@ -27,6 +27,7 @@ extern int box64_dynarec_hotpage;
 extern int box64_dynarec_fastpage;
 extern int box64_dynarec_wait;
 extern int box64_dynarec_test;
+extern int box64_dynarec_missing;
 #ifdef ARM64
 extern int arm64_asimd;
 extern int arm64_aes;
diff --git a/src/main.c b/src/main.c
index df4bc65f..aebe557a 100755
--- a/src/main.c
+++ b/src/main.c
@@ -63,6 +63,7 @@ int box64_dynarec_fastpage = 0;
 int box64_dynarec_bleeding_edge = 1;
 int box64_dynarec_wait = 1;
 int box64_dynarec_test = 0;
+int box64_dynarec_missing = 0;
 uintptr_t box64_nodynarec_start = 0;
 uintptr_t box64_nodynarec_end = 0;
 #ifdef ARM64
@@ -604,6 +605,15 @@ void LoadLogEnv()
         if(box64_dynarec_fastpage)
             printf_log(LOG_INFO, "Dynarec will use Fast HotPage\n");
     }
+    p = getenv("BOX64_DYNAREC_MISSING");
+    if(p) {
+        if(strlen(p)==1) {
+            if(p[0]>='0' && p[0]<='1')
+                box64_dynarec_missing = p[0]-'0';
+        }
+        if(box64_dynarec_missing)
+            printf_log(LOG_INFO, "Dynarec will print missing opcodes\n");
+    }
     p = getenv("BOX64_NODYNAREC");
     if(p) {
         if (strchr(p,'-')) {
diff --git a/src/tools/rcfile.c b/src/tools/rcfile.c
index 16bbfefa..e0aae458 100644
--- a/src/tools/rcfile.c
+++ b/src/tools/rcfile.c
@@ -131,6 +131,7 @@ ENTRYBOOL(BOX64_DYNAREC_FASTPAGE, box64_dynarec_fastpage)           \
 ENTRYBOOL(BOX64_DYNAREC_WAIT, box64_dynarec_wait)                   \
 ENTRYSTRING_(BOX64_NODYNAREC, box64_nodynarec)                      \
 ENTRYBOOL(BOX64_DYNAREC_TEST, box64_dynarec_test)                   \
+ENTRYBOOL(BOX64_DYNAREC_MISSING, box64_dynarec_missing)             \
 
 #else
 #define SUPER3()                                                    \
@@ -151,6 +152,7 @@ IGNORE(BOX64_DYNAREC_FASTPAGE)                                      \
 IGNORE(BOX64_DYNAREC_WAIT)                                          \
 IGNORE(BOX64_NODYNAREC)                                             \
 IGNORE(BOX64_DYNAREC_TEST)                                          \
+IGNORE(BOX64_DYNAREC_MISSING)                                       \
 
 #endif