diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-02-17 09:25:00 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-02-17 09:25:00 +0100 |
| commit | a79e1be034be8e3d35bed08ff0ff11e27bc388d2 (patch) | |
| tree | b8a1ee28eb66adf024d04946fc92b07a080c6e17 /src/dynarec | |
| parent | 5924a8eca1873b3e38909fe39f4287f5f12210b3 (diff) | |
| download | box64-a79e1be034be8e3d35bed08ff0ff11e27bc388d2.tar.gz box64-a79e1be034be8e3d35bed08ff0ff11e27bc388d2.zip | |
Added 67 C6 opcode ([ARM64_DYNAREC] too)
Diffstat (limited to 'src/dynarec')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_67.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_67.c b/src/dynarec/arm64/dynarec_arm64_67.c index c7d80a6f..ea093b0a 100644 --- a/src/dynarec/arm64/dynarec_arm64_67.c +++ b/src/dynarec/arm64/dynarec_arm64_67.c @@ -985,6 +985,34 @@ uintptr_t dynarec64_67(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } break; + case 0xC6: + INST_NAME("MOV Eb, Ib"); + nextop=F8; + if(MODREG) { // reg <= u8 + u8 = F8; + if(!rex.rex) { + ed = (nextop&7); + eb1 = xRAX+(ed&3); // Ax, Cx, Dx or Bx + eb2 = (ed&4)>>2; // L or H + } else { + eb1 = xRAX+(nextop&7)+(rex.b<<3); + eb2 = 0; + } + MOV32w(x3, u8); + BFIx(eb1, x3, eb2*8, 8); + } else { // mem <= u8 + addr = geted32(dyn, addr, ninst, nextop, &wback, x1, &fixedaddress, &unscaled, 0xfff, 0, rex, &lock, 0, 1); + u8 = F8; + if(u8) { + MOV32w(x3, u8); + ed = x3; + } else + ed = xZR; + WILLWRITELOCK(lock); + STB(ed, wback, fixedaddress); + SMWRITELOCK(lock); + } + break; case 0xC7: INST_NAME("MOV Ed, Id"); nextop=F8; |