mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-23 21:00:46 +02:00
Merge pull request #257 from Sonicadvance1/fix_x86_crash
Fixes AtomicSwap IR op on x86
This commit is contained in:
commit
82e43ad35d
1 file changed
+4
-1
@@ -4095,22 +4095,25 @@ void *JITCore::CompileCode([[maybe_unused]] FEXCore::IR::IRListView<true> const
|
||||
mov(MemReg, Memory);
|
||||
add(MemReg, GetSrc<RA_64>(Op->Header.Args[0].ID()));
|
||||
}
|
||||
lock();
|
||||
switch (Op->Size) {
|
||||
case 1:
|
||||
mov(GetDst<RA_8>(Node), GetSrc<RA_8>(Op->Header.Args[1].ID()));
|
||||
lock();
|
||||
xchg(byte [MemReg], GetDst<RA_8>(Node));
|
||||
break;
|
||||
case 2:
|
||||
mov(GetDst<RA_16>(Node), GetSrc<RA_16>(Op->Header.Args[1].ID()));
|
||||
lock();
|
||||
xchg(word [MemReg], GetDst<RA_8>(Node));
|
||||
break;
|
||||
case 4:
|
||||
mov(GetDst<RA_32>(Node), GetSrc<RA_32>(Op->Header.Args[1].ID()));
|
||||
lock();
|
||||
xchg(dword [MemReg], GetDst<RA_8>(Node));
|
||||
break;
|
||||
case 8:
|
||||
mov(GetDst<RA_64>(Node), GetSrc<RA_64>(Op->Header.Args[1].ID()));
|
||||
lock();
|
||||
xchg(qword [MemReg], GetDst<RA_8>(Node));
|
||||
break;
|
||||
default: LogMan::Msg::A("Unhandled AtomicAdd size: %d", Op->Size);
|
||||
|
||||
Reference in new issue
Block a user