mirror of
https://github.com/Lime3DS/Lime3DS.git
synced 2024-12-24 17:01:48 +01:00
Merge pull request #407 from Subv/arbiter
AddressArbiter: Ported arbitration type 2 from 3dmoo.
This commit is contained in:
commit
cc23269ff4
@ -51,6 +51,17 @@ ResultCode ArbitrateAddress(Handle handle, ArbitrationType type, u32 address, s3
|
|||||||
HLE::Reschedule(__func__);
|
HLE::Reschedule(__func__);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ArbitrationType::DecrementAndWaitIfLessThan:
|
||||||
|
{
|
||||||
|
s32 memory_value = Memory::Read32(address) - 1;
|
||||||
|
Memory::Write32(address, memory_value);
|
||||||
|
if (memory_value <= value) {
|
||||||
|
Kernel::WaitCurrentThread(WAITTYPE_ARB, handle, address);
|
||||||
|
HLE::Reschedule(__func__);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_ERROR(Kernel, "unknown type=%d", type);
|
LOG_ERROR(Kernel, "unknown type=%d", type);
|
||||||
|
Loading…
Reference in New Issue
Block a user