about summary refs log tree commit diff stats
path: root/src/dynarec
diff options
context:
space:
mode:
authorYang Liu <liuyang22@iscas.ac.cn>2025-02-18 00:06:47 +0800
committerGitHub <noreply@github.com>2025-02-17 17:06:47 +0100
commitf85b9ac664fedafe2fba8d40a01456bf197b5228 (patch)
tree54ba5c4575ace87dd29b4cd2f026b8f6d0bcbe76 /src/dynarec
parentee5a41e21e01dfc3bf51a8f893ffdea2f2791e52 (diff)
downloadbox64-f85b9ac664fedafe2fba8d40a01456bf197b5228.tar.gz
box64-f85b9ac664fedafe2fba8d40a01456bf197b5228.zip
[INTERP] Added more nops ([DYNAREC] too) (#2377)
Diffstat (limited to 'src/dynarec')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_64.c8
-rw-r--r--src/dynarec/la64/dynarec_la64_64.c14
-rw-r--r--src/dynarec/rv64/dynarec_rv64_64.c7
3 files changed, 28 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c
index 3aa3571b..ee1d22f1 100644
--- a/src/dynarec/arm64/dynarec_arm64_64.c
+++ b/src/dynarec/arm64/dynarec_arm64_64.c
@@ -194,7 +194,13 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
                             DEFAULT;
                     }
                     break;
-
+                case 0x18:
+                case 0x19:
+                case 0x1F:
+                    INST_NAME("NOP (multibyte)");
+                    nextop = F8;
+                    FAKEED;
+                    break;
                 case 0x28:
                     switch(rep) {
                         case 0:
diff --git a/src/dynarec/la64/dynarec_la64_64.c b/src/dynarec/la64/dynarec_la64_64.c
index 2af080ef..6e076719 100644
--- a/src/dynarec/la64/dynarec_la64_64.c
+++ b/src/dynarec/la64/dynarec_la64_64.c
@@ -79,6 +79,20 @@ uintptr_t dynarec64_64(dynarec_la64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
             GETEDO(x4, 0);
             emit_or32(dyn, ninst, rex, gd, ed, x3, x4);
             break;
+        case 0x0F:
+            opcode = F8;
+            switch (opcode) {
+                case 0x18:
+                case 0x19:
+                case 0x1F:
+                    INST_NAME("NOP (multibyte)");
+                    nextop = F8;
+                    FAKEED;
+                    break;
+                default:
+                    DEFAULT;
+            }
+            break;
         case 0x2B:
             INST_NAME("SUB Gd, Seg:Ed");
             SETFLAGS(X_ALL, SF_SET_PENDING, NAT_FLAGS_FUSION);
diff --git a/src/dynarec/rv64/dynarec_rv64_64.c b/src/dynarec/rv64/dynarec_rv64_64.c
index 6447c7f2..69503d77 100644
--- a/src/dynarec/rv64/dynarec_rv64_64.c
+++ b/src/dynarec/rv64/dynarec_rv64_64.c
@@ -131,6 +131,13 @@ uintptr_t dynarec64_64(dynarec_rv64_t* dyn, uintptr_t addr, uintptr_t ip, int ni
                     }
                     break;
 
+                    case 0x18:
+                    case 0x19:
+                    case 0x1F:
+                        INST_NAME("NOP (multibyte)");
+                        nextop = F8;
+                        FAKEED;
+                        break;
                 default:
                     DEFAULT;
             }