diff options
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 */ |