about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-07-10 08:13:45 +0200
committerptitSeb <sebastien.chev@gmail.com>2021-07-10 08:13:45 +0200
commit8b48773176bdcc89756e90e6d597fdf6a5c9ae7e (patch)
treeb4a14c809f657159e3a7aad02685a0218150910a /src
parent9a17d9a35e6e0b1daffb551e72381e98d96995e5 (diff)
downloadbox64-8b48773176bdcc89756e90e6d597fdf6a5c9ae7e.tar.gz
box64-8b48773176bdcc89756e90e6d597fdf6a5c9ae7e.zip
Added 67 E8 opcode ([DYNAREC] too) (for #45)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/dynarec/dynarec_arm64_67.c3
-rw-r--r--src/emu/x64run67.c7
2 files changed, 10 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_67.c b/src/dynarec/dynarec_arm64_67.c
index 6e3687a5..22466181 100755
--- a/src/dynarec/dynarec_arm64_67.c
+++ b/src/dynarec/dynarec_arm64_67.c
@@ -157,6 +157,9 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin
             break;

         #undef GO

 

+        case 0xE8:

+            return dynarec64_00(dyn, addr-1, ip, ninst, rex, rep, ok, need_epilog); // addr-1, to "put back" opcode)

+

         default:

             DEFAULT;

     }

diff --git a/src/emu/x64run67.c b/src/emu/x64run67.c
index 239bae4a..6668999f 100644
--- a/src/emu/x64run67.c
+++ b/src/emu/x64run67.c
@@ -29,6 +29,7 @@ int Run67(x64emu_t *emu, rex_t rex, int rep)
     int8_t tmp8s;

     uint8_t tmp8u;

     uint32_t tmp32u;

+    int32_t tmp32s;

     uint64_t tmp64u;

     reg64_t *oped, *opgd;

 

@@ -237,6 +238,12 @@ int Run67(x64emu_t *emu, rex_t rex, int rep)
             R_RIP += tmp8s;

         break;

 

+    case 0xE8:                      /* CALL Id */

+        tmp32s = F32S; // call is relative

+        Push(emu, R_RIP);

+        R_RIP += tmp32s;

+        break;

+

     case 0xF7:                      /* GRP3 Ed(,Id) */

         nextop = F8;

         tmp8u = (nextop>>3)&7;