about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-04-06 12:24:23 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-04-06 12:24:23 +0200
commita4772ff2fa6e30eb7a0aa4415c285350ed7922ed (patch)
treef0f1790d817785cc9986d98a6088c627fa39294f /src
parent23a6d1a752e52939f097545c0e1777e694409ec3 (diff)
downloadbox64-a4772ff2fa6e30eb7a0aa4415c285350ed7922ed.tar.gz
box64-a4772ff2fa6e30eb7a0aa4415c285350ed7922ed.zip
Added 66 (2E) 70-7F opcodes ([DYNAREC] too) (for #271)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_66.c19
-rw-r--r--src/emu/x64run66.c20
2 files changed, 39 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c
index 6e8c3b65..3135c399 100755
--- a/src/dynarec/arm64/dynarec_arm64_66.c
+++ b/src/dynarec/arm64/dynarec_arm64_66.c
@@ -328,6 +328,25 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             GWBACK;

             break;

 

+        case 0x70:

+        case 0x71:

+        case 0x72:

+        case 0x73:

+        case 0x74:

+        case 0x75:

+        case 0x76:

+        case 0x77:

+        case 0x78:

+        case 0x79:

+        case 0x7a:

+        case 0x7b:

+        case 0x7c:

+        case 0x7d:

+        case 0x7e:

+        case 0x7f:

+            // just use regular conditional jump

+            return dynarec64_00(dyn, addr-1, ip, ninst, rex, rep, ok, need_epilog);

+

         case 0x81:

         case 0x83:

             nextop = F8;

diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c
index 3b4ebf4c..92093332 100644
--- a/src/emu/x64run66.c
+++ b/src/emu/x64run66.c
@@ -160,6 +160,26 @@ int Run66(x64emu_t *emu, rex_t rex, int rep)
             GW->word[0] = imul16(emu, EW->word[0], (uint16_t)tmp16s);

         }

         break;

+    

+    case 0x70:

+    case 0x71:

+    case 0x72:

+    case 0x73:

+    case 0x74:

+    case 0x75:

+    case 0x76:

+    case 0x77:

+    case 0x78:

+    case 0x79:

+    case 0x7a:

+    case 0x7b:

+    case 0x7c:

+    case 0x7d:

+    case 0x7e:

+    case 0x7f:

+        // just ignore the 66 (and maybe other) prefix and use regular conditional jump

+        R_RIP--;

+        return 0;

 

     case 0x81:                              /* GRP3 Ew,Iw */

     case 0x83:                              /* GRP3 Ew,Ib */