diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-10-13 11:35:13 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-10-13 11:35:20 +0200 |
| commit | 6f2d067f3abb70aa6d8d386a1a2395e4bff39c9b (patch) | |
| tree | 22e1d431c85a3ec5705d8813ec7076ebfe43e1c2 /src | |
| parent | d31b9c9caa6b28e5c9246dcffc88367ef9d4e8f6 (diff) | |
| download | box64-6f2d067f3abb70aa6d8d386a1a2395e4bff39c9b.tar.gz box64-6f2d067f3abb70aa6d8d386a1a2395e4bff39c9b.zip | |
[INTERPRETER] Added 64/65 85 opcode ([ARM64_DYNAREC] too) (for #1932)
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) |