about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-03-12 16:16:34 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-03-12 16:16:34 +0100
commit216e70756cb1fdaf064c9d11fe205c7c62ee63d5 (patch)
tree5667a2c72c35a6c916c5ec32df25f4a6e07df4c6
parent5a52922cd2b9033f6f38ea1cbc78058cf6780cf5 (diff)
downloadbox64-216e70756cb1fdaf064c9d11fe205c7c62ee63d5.tar.gz
box64-216e70756cb1fdaf064c9d11fe205c7c62ee63d5.zip
[ARM64_DYNAREC] Added F4 opcode
-rwxr-xr-xsrc/dynarec/arm64/dynarec_arm64_00.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_00.c b/src/dynarec/arm64/dynarec_arm64_00.c
index 4f327f5b..21b5149f 100755
--- a/src/dynarec/arm64/dynarec_arm64_00.c
+++ b/src/dynarec/arm64/dynarec_arm64_00.c
@@ -2222,6 +2222,17 @@ uintptr_t dynarec64_00(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             addr = dynarec64_F0(dyn, addr, ip, ninst, rex, rep, ok, need_epilog);
             break;
 
+        case 0xF4:
+            INST_NAME("HLT");
+            SETFLAGS(X_ALL, SF_SET);    // Hack to set flags in "don't care" state
+            GETIP(ip);
+            STORE_XEMU_CALL(xRIP);
+            CALL(arm_priv, -1);
+            LOAD_XEMU_CALL(xRIP);
+            jump_to_epilog(dyn, 0, xRIP, ninst);
+            *need_epilog = 0;
+            *ok = 0;
+            break;
         case 0xF5:
             INST_NAME("CMC");
             READFLAGS(X_CF);