diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-04-06 12:24:23 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-04-06 12:24:23 +0200 |
| commit | a4772ff2fa6e30eb7a0aa4415c285350ed7922ed (patch) | |
| tree | f0f1790d817785cc9986d98a6088c627fa39294f /src | |
| parent | 23a6d1a752e52939f097545c0e1777e694409ec3 (diff) | |
| download | box64-a4772ff2fa6e30eb7a0aa4415c285350ed7922ed.tar.gz box64-a4772ff2fa6e30eb7a0aa4415c285350ed7922ed.zip | |
Added 66 (2E) 70-7F opcodes ([DYNAREC] too) (for #271)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/dynarec/arm64/dynarec_arm64_66.c | 19 | ||||
| -rw-r--r-- | src/emu/x64run66.c | 20 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_66.c b/src/dynarec/arm64/dynarec_arm64_66.c index 6e8c3b65..3135c399 100755 --- a/src/dynarec/arm64/dynarec_arm64_66.c +++ b/src/dynarec/arm64/dynarec_arm64_66.c @@ -328,6 +328,25 @@ uintptr_t dynarec64_66(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin GWBACK; break; + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7a: + case 0x7b: + case 0x7c: + case 0x7d: + case 0x7e: + case 0x7f: + // just use regular conditional jump + return dynarec64_00(dyn, addr-1, ip, ninst, rex, rep, ok, need_epilog); + case 0x81: case 0x83: nextop = F8; diff --git a/src/emu/x64run66.c b/src/emu/x64run66.c index 3b4ebf4c..92093332 100644 --- a/src/emu/x64run66.c +++ b/src/emu/x64run66.c @@ -160,6 +160,26 @@ int Run66(x64emu_t *emu, rex_t rex, int rep) GW->word[0] = imul16(emu, EW->word[0], (uint16_t)tmp16s); } break; + + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7a: + case 0x7b: + case 0x7c: + case 0x7d: + case 0x7e: + case 0x7f: + // just ignore the 66 (and maybe other) prefix and use regular conditional jump + R_RIP--; + return 0; case 0x81: /* GRP3 Ew,Iw */ case 0x83: /* GRP3 Ew,Ib */ |