diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-24 14:20:22 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-24 14:20:22 +0200 |
| commit | 4409374c47df8c4f326c663f4a30f108ccdba48c (patch) | |
| tree | 97444fdc2ea1d37c2e95ae5c8d4d37c21eb960b7 /src | |
| parent | 4299e0a3a3b0eba117ad83c8504cec7d8c0a64ce (diff) | |
| download | box64-4409374c47df8c4f326c663f4a30f108ccdba48c.tar.gz box64-4409374c47df8c4f326c663f4a30f108ccdba48c.zip | |
[ARM64_DYNAREC] Added 67 A9 opcode, and fixed 67 opcode with ignored REX prefix
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_67.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c index 814a32d9..50fdf824 100644 --- a/src/dynarec/arm64/dynarec_arm64_67.c +++ b/src/dynarec/arm64/dynarec_arm64_67.c @@ -60,6 +60,7 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin while(opcode==0x67) opcode = F8; rep = 0; + rex.rex = 0; // reset rex after 67 while((opcode==0xF2) || (opcode==0xF3) || (opcode>=0x40 && opcode<=0x4F)) { if((opcode==0xF2) || (opcode==0xF3)) rep = opcode-0xF1; @@ -1122,6 +1123,14 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } break; + case 0xA9: + INST_NAME("TEST EAX, Id"); + SETFLAGS(X_ALL, SF_SET_PENDING); + i64 = F32S; + MOV64xw(x2, i64); + emit_test32(dyn, ninst, rex, xRAX, x2, x3, x4, x5); + break; + case 0xC1: nextop = F8; switch((nextop>>3)&7) { |