about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-04-02 15:54:10 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-04-02 15:54:10 +0200
commitc74406c89e81be0f331c0568c716fb98185afa07 (patch)
tree4ff766bb6ad0eea17abac06d90a72836fbac5ed5 /src
parentc44b8b1936ed2cbbceb0e530fdd0c43565dd5e8d (diff)
downloadbox64-c74406c89e81be0f331c0568c716fb98185afa07.tar.gz
box64-c74406c89e81be0f331c0568c716fb98185afa07.zip
[DYNAREC] Added 66 AB opcodes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_66.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_66.c b/src/dynarec/dynarec_arm64_66.c
index fb11067e..631579c1 100755
--- a/src/dynarec/dynarec_arm64_66.c
+++ b/src/dynarec/dynarec_arm64_66.c
@@ -487,6 +487,29 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             emit_test16(dyn, ninst, x1, x2, x3, x4, x5);

             break;

 

+        case 0xAB:

+            if(rep) {

+                INST_NAME("REP STOSW");

+                CBZx_NEXT(xRCX);

+                TBNZ_MARK2(xFlags, F_DF);

+                MARK;   // Part with DF==0

+                STRH_S9_postindex(xRAX, xRDI, 2);

+                SUBx_U12(xRCX, xRCX, 1);

+                CBNZx_MARK(xRCX);

+                B_NEXT_nocond;

+                MARK2;  // Part with DF==1

+                STRH_S9_postindex(xRAX, xRDI, -2);

+                SUBx_U12(xRCX, xRCX, 1);

+                CBNZx_MARK2(xRCX);

+                // done

+            } else {

+                INST_NAME("STOSW");

+                GETDIR(x3, 2);

+                STRH_U12(xRAX, xRDI, 0);

+                ADDx_REG(xRDI, xRDI, x3);

+            }

+            break;

+

         case 0xB8:

         case 0xB9:

         case 0xBA: