diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-03-28 21:25:18 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-03-28 21:25:18 +0200 |
| commit | 37795375b6ded5559725f93a531851bc0ad5965b (patch) | |
| tree | f75cdd2194bfb6631305d7f6be4bf81f7fe05100 /src | |
| parent | 903f9ddb41782221a6e4a248b4144af2b15f0d0d (diff) | |
| download | box64-37795375b6ded5559725f93a531851bc0ad5965b.tar.gz box64-37795375b6ded5559725f93a531851bc0ad5965b.zip | |
[DYNAREC] Added F0 29 opcode
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/dynarec_arm64_f0.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_arm64_f0.c b/src/dynarec/dynarec_arm64_f0.c index ff1b8511..00402b04 100644 --- a/src/dynarec/dynarec_arm64_f0.c +++ b/src/dynarec/dynarec_arm64_f0.c @@ -215,6 +215,24 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } break; + case 0x29: + INST_NAME("LOCK SUB Ed, Gd"); + SETFLAGS(X_ALL, SF_SET); + nextop = F8; + GETGD; + if(MODREG) { + ed = xRAX+(nextop&7)+(rex.b<<3); + emit_sub32(dyn, ninst, rex, ed, gd, x3, x4); + } else { + addr = geted(dyn, addr, ninst, nextop, &wback, x2, &fixedaddress, 0, 0, rex, 0, 0); + MARKLOCK; + LDAXRxw(x1, wback); + emit_sub32(dyn, ninst, rex, x1, gd, x3, x4); + STLXRxw(x3, x1, wback); + CBNZx_MARKLOCK(x3); + } + break; + case 0x81: case 0x83: nextop = F8; |