about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-10-07 17:26:40 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-10-07 17:26:40 +0200
commit3987e644a8e6bcce78ed9dd34941a22eecfe8fe8 (patch)
tree18bd879aa596b9c515c99adb3ea71c6336da5765 /src
parentf073415510929646b7e2d5e254c4932b46b40233 (diff)
downloadbox64-3987e644a8e6bcce78ed9dd34941a22eecfe8fe8.tar.gz
box64-3987e644a8e6bcce78ed9dd34941a22eecfe8fe8.zip
Added 66 6A opcode ([ARM64_DYNAREC] too) (for #1911)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_66.c6
-rw-r--r--src/emu/x64run66.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c
index 3be6dac2..aa1333e9 100644
--- a/src/dynarec/arm64/dynarec_arm64_66.c
+++ b/src/dynarec/arm64/dynarec_arm64_66.c
@@ -450,6 +450,12 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             GWBACK;

             UFLAG_DF(x1, d_imul16);

             break;

+        case 0x6A:

+            INST_NAME("PUSH Ib");

+            u16 = (uint16_t)F8S;

+            MOV32w(x2, u16);

+            PUSH1_16(x2);

+            break;

 

         case 0x70:

         case 0x71:

diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c
index b3fffe37..e1abf3b7 100644
--- a/src/emu/x64run66.c
+++ b/src/emu/x64run66.c
@@ -291,7 +291,10 @@ uintptr_t Run66(x64emu_t *emu, rex_t rex, int rep, uintptr_t addr)
             GW->word[0] = imul16(emu, EW->word[0], tmp16u);

         }

         break;

-

+    case 0x6A:                       /* PUSH u8 */

+        tmp16s = F8S;

+        Push16(emu, tmp16s);

+        break;

     case 0x6B:                      /* IMUL Gw,Ew,Ib */

         nextop = F8;

         GETEW(1);