diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_64.c | 11 | ||||
| -rw-r--r-- | src/emu/x64run64.c | 9 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_64.c b/src/dynarec/arm64/dynarec_arm64_64.c index 681b386f..956ee565 100644 --- a/src/dynarec/arm64/dynarec_arm64_64.c +++ b/src/dynarec/arm64/dynarec_arm64_64.c @@ -669,6 +669,17 @@ uintptr_t dynarec64_64(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin break; } break; + + case 0x85: + INST_NAME("TEST Ed, Gd"); + SETFLAGS(X_ALL, SF_SET_PENDING); + nextop=F8; + grab_segdata(dyn, addr, ninst, x6, seg); + GETGD; + GETEDO(x6, 0); + emit_test32(dyn, ninst, rex, ed, gd, x3, x5, x6); + break; + case 0x88: INST_NAME("MOV Eb, Gb"); nextop = F8; diff --git a/src/emu/x64run64.c b/src/emu/x64run64.c index b80a5ef4..ae9512b0 100644 --- a/src/emu/x64run64.c +++ b/src/emu/x64run64.c @@ -528,6 +528,15 @@ uintptr_t Run64(x64emu_t *emu, rex_t rex, int seg, uintptr_t addr) } break; + case 0x85: /* TEST Ed,Gd */ + nextop = F8; + GETED_OFFS(0, tlsdata); + GETGD; + if(rex.w) + test64(emu, ED->q[0], GD->q[0]); + else + test32(emu, ED->dword[0], GD->dword[0]); + break; case 0x86: /* XCHG Eb,Gb */ nextop = F8; #if defined(DYNAREC) && !defined(TEST_INTERPRETER) |