about summary refs log tree commit diff stats
path: root/src/emu
diff options
context:
space:
mode:
authorwannacu <wannacu2049@gmail.com>2023-08-21 11:31:41 +0800
committerwannacu <wannacu2049@gmail.com>2023-08-21 11:47:09 +0800
commitcd0aad731adede316ea036692ef92669474c1256 (patch)
tree0d63281601227510e012a9ec2cf5de86144acdf7 /src/emu
parent8e7afcc5fb6c320126c06bc46f7691fb2199634d (diff)
downloadbox64-cd0aad731adede316ea036692ef92669474c1256.tar.gz
box64-cd0aad731adede316ea036692ef92669474c1256.zip
[ARM64_DYNAREC] Added 0F F1/F3/F7 opcodes
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/x64run0f.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/emu/x64run0f.c b/src/emu/x64run0f.c
index 466220bc..a05b3596 100644
--- a/src/emu/x64run0f.c
+++ b/src/emu/x64run0f.c
@@ -1734,7 +1734,16 @@ uintptr_t Run0F(x64emu_t *emu, rex_t rex, uintptr_t addr, int *step)
                 tmp32u += (GM->ub[i]>EM->ub[i])?(GM->ub[i] - EM->ub[i]):(EM->ub[i] - GM->ub[i]);

             GM->q = tmp32u;

             break;

-

+        case 0xF7:                   /* MASKMOVQ Gm, Em */

+            nextop = F8;

+            GETEM(0);

+            GETGM;

+            for (int i = 0; i < 8; i++) {

+                if (EM->ub[i] & 0x80) {

+                   ((reg64_t*)(emu->regs[_DI].q[0]))->byte[i] = GM->ub[i];

+                }

+            }

+            break;

         case 0xF8:                   /* PSUBB Gm,Em */

             nextop = F8;

             GETEM(0);