diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 22:28:19 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 22:28:19 +0200 |
| commit | 7f390a5499b209dd5c47be51c944fe8e83b4a66c (patch) | |
| tree | 8aba8da11e6d437137336e23b56c30342954b3be /src | |
| parent | b9f38bcefd8b9e913ddad4be87779444d637365d (diff) | |
| download | box64-7f390a5499b209dd5c47be51c944fe8e83b4a66c.tar.gz box64-7f390a5499b209dd5c47be51c944fe8e83b4a66c.zip | |
[DYNAREC] Added F0 09 opcode (for CB15)
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 b6c3c650..9a731b81 100644 --- a/src/dynarec/dynarec_arm64_f0.c +++ b/src/dynarec/dynarec_arm64_f0.c @@ -96,6 +96,24 @@ uintptr_t dynarec64_F0(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip, int nin } break; + case 0x09: + INST_NAME("LOCK OR Ed, Gd"); + SETFLAGS(X_ALL, SF_SET_PENDING); + nextop = F8; + GETGD; + if(MODREG) { + ed = xRAX+(nextop&7)+(rex.b<<3); + emit_or32(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_or32(dyn, ninst, rex, x1, gd, x3, x4); + STLXRxw(x3, x1, wback); + CBNZx_MARKLOCK(x3); + } + break; + case 0x0F: nextop = F8; switch(nextop) { |