Browse Source

Merge pull request #407 from Subv/arbiter

AddressArbiter: Ported arbitration type 2 from 3dmoo.
pull/15/merge
bunnei 11 years ago
parent
commit
cc23269ff4
  1. 11
      src/core/hle/kernel/address_arbiter.cpp

11
src/core/hle/kernel/address_arbiter.cpp

@ -51,6 +51,17 @@ ResultCode ArbitrateAddress(Handle handle, ArbitrationType type, u32 address, s3
HLE::Reschedule(__func__);
}
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:
LOG_ERROR(Kernel, "unknown type=%d", type);

Loading…
Cancel
Save