diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-07-10 08:13:45 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-07-10 08:13:45 +0200 |
| commit | 8b48773176bdcc89756e90e6d597fdf6a5c9ae7e (patch) | |
| tree | b4a14c809f657159e3a7aad02685a0218150910a /src | |
| parent | 9a17d9a35e6e0b1daffb551e72381e98d96995e5 (diff) | |
| download | box64-8b48773176bdcc89756e90e6d597fdf6a5c9ae7e.tar.gz box64-8b48773176bdcc89756e90e6d597fdf6a5c9ae7e.zip | |
Added 67 E8 opcode ([DYNAREC] too) (for #45)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/dynarec_arm64_67.c | 3 | ||||
| -rw-r--r-- | src/emu/x64run67.c | 7 |
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; |