about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-02-17 20:12:37 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-02-17 20:12:50 +0100
commit4314ef1ca8717321a649b42f21ddd4a7ce951e60 (patch)
treefd636af41be9d4c15a3c484d19e843b307f77a90 /src
parent477e531af9497616d3dac31af0263692e8c43ba3 (diff)
downloadbox64-4314ef1ca8717321a649b42f21ddd4a7ce951e60.tar.gz
box64-4314ef1ca8717321a649b42f21ddd4a7ce951e60.zip
[DYNAREC] Adjusted the PUSH/POP x87 macro (and fix RV64 test infinite loop)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.h3
-rw-r--r--src/dynarec/rv64/dynarec_rv64_helper.h6
2 files changed, 3 insertions, 6 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.h b/src/dynarec/arm64/dynarec_arm64_helper.h
index b779a337..f2654aa4 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.h
+++ b/src/dynarec/arm64/dynarec_arm64_helper.h
@@ -800,7 +800,6 @@
 #define X87_PUSH_OR_FAIL(var, dyn, ninst, scratch, t) \
     if (dyn->n.x87stack == +8) {                      \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Push, stack=%d on inst %d\n", dyn->n.x87stack, ninst); \
-        DEFAULT;                                      \
         dyn->abort = 1;                               \
         return addr;                                  \
     }                                                 \
@@ -809,7 +808,6 @@
 #define X87_PUSH_EMPTY_OR_FAIL(dyn, ninst, scratch) \
     if (dyn->n.x87stack == +8) {                       \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Push, stack=%d on inst %d\n", dyn->n.x87stack, ninst); \
-        DEFAULT;                                    \
         dyn->abort = 1;                             \
         return addr;                                \
     }                                               \
@@ -818,7 +816,6 @@
 #define X87_POP_OR_FAIL(dyn, ninst, scratch) \
     if (dyn->n.x87stack == -8) {                \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Pop, stack=%d on inst %d\n", dyn->n.x87stack, ninst); \
-        DEFAULT;                             \
         dyn->abort = 1;                      \
         return addr;                         \
     }                                        \
diff --git a/src/dynarec/rv64/dynarec_rv64_helper.h b/src/dynarec/rv64/dynarec_rv64_helper.h
index 6412bbbe..85ffd5e3 100644
--- a/src/dynarec/rv64/dynarec_rv64_helper.h
+++ b/src/dynarec/rv64/dynarec_rv64_helper.h
@@ -890,7 +890,7 @@
 #define X87_PUSH_OR_FAIL(var, dyn, ninst, scratch, t) \
     if (dyn->e.stack == +8) {                         \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Push, stack=%d on inst %d\n", dyn->e.x87stack, ninst); \
-        DEFAULT;                                      \
+        dyn->abort = 1;                               \
         return addr;                                  \
     }                                                 \
     var = x87_do_push(dyn, ninst, scratch, t);
@@ -898,7 +898,7 @@
 #define X87_PUSH_EMPTY_OR_FAIL(dyn, ninst, scratch) \
     if (dyn->e.stack == +8) {                       \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Push, stack=%d on inst %d\n", dyn->e.x87stack, ninst); \
-        DEFAULT;                                    \
+        dyn->abort = 1;                               \
         return addr;                                \
     }                                               \
     x87_do_push_empty(dyn, ninst, scratch);
@@ -906,7 +906,7 @@
 #define X87_POP_OR_FAIL(dyn, ninst, scratch) \
     if (dyn->e.stack == -8) {                \
         if(box64_dynarec_dump) dynarec_log(LOG_INFO, " Warning, suspicious x87 Pop, stack=%d on inst %d\n", dyn->e.x87stack, ninst); \
-        DEFAULT;                             \
+        dyn->abort = 1;                               \
         return addr;                         \
     }                                        \
     x87_do_pop(dyn, ninst, scratch);