summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2019-03-06 15:55:56 -0500
committerGravatar GitHub2019-03-06 15:55:56 -0500
commit75b417489ad3e23f62060933b0fe0f29646bbd04 (patch)
tree1b5944f3d09d3383a9c94c3fdaf2cb14c9a9a8cf /src/core/hle/kernel/svc.cpp
parentMerge pull request #2201 from lioncash/audio-retval (diff)
parentkernel/address_arbiter: Pass in system instance to constructor (diff)
downloadyuzu-75b417489ad3e23f62060933b0fe0f29646bbd04.tar.gz
yuzu-75b417489ad3e23f62060933b0fe0f29646bbd04.tar.xz
yuzu-75b417489ad3e23f62060933b0fe0f29646bbd04.zip
Merge pull request #2199 from lioncash/arbiter
kernel/address_arbiter: Convert the address arbiter into a class
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 223d717e2..75b88a333 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1478,13 +1478,14 @@ static ResultCode WaitForAddress(VAddr address, u32 type, s32 value, s64 timeout
1478 return ERR_INVALID_ADDRESS; 1478 return ERR_INVALID_ADDRESS;
1479 } 1479 }
1480 1480
1481 auto& address_arbiter = Core::System::GetInstance().Kernel().AddressArbiter();
1481 switch (static_cast<AddressArbiter::ArbitrationType>(type)) { 1482 switch (static_cast<AddressArbiter::ArbitrationType>(type)) {
1482 case AddressArbiter::ArbitrationType::WaitIfLessThan: 1483 case AddressArbiter::ArbitrationType::WaitIfLessThan:
1483 return AddressArbiter::WaitForAddressIfLessThan(address, value, timeout, false); 1484 return address_arbiter.WaitForAddressIfLessThan(address, value, timeout, false);
1484 case AddressArbiter::ArbitrationType::DecrementAndWaitIfLessThan: 1485 case AddressArbiter::ArbitrationType::DecrementAndWaitIfLessThan:
1485 return AddressArbiter::WaitForAddressIfLessThan(address, value, timeout, true); 1486 return address_arbiter.WaitForAddressIfLessThan(address, value, timeout, true);
1486 case AddressArbiter::ArbitrationType::WaitIfEqual: 1487 case AddressArbiter::ArbitrationType::WaitIfEqual:
1487 return AddressArbiter::WaitForAddressIfEqual(address, value, timeout); 1488 return address_arbiter.WaitForAddressIfEqual(address, value, timeout);
1488 default: 1489 default:
1489 LOG_ERROR(Kernel_SVC, 1490 LOG_ERROR(Kernel_SVC,
1490 "Invalid arbitration type, expected WaitIfLessThan, DecrementAndWaitIfLessThan " 1491 "Invalid arbitration type, expected WaitIfLessThan, DecrementAndWaitIfLessThan "
@@ -1509,13 +1510,14 @@ static ResultCode SignalToAddress(VAddr address, u32 type, s32 value, s32 num_to
1509 return ERR_INVALID_ADDRESS; 1510 return ERR_INVALID_ADDRESS;
1510 } 1511 }
1511 1512
1513 auto& address_arbiter = Core::System::GetInstance().Kernel().AddressArbiter();
1512 switch (static_cast<AddressArbiter::SignalType>(type)) { 1514 switch (static_cast<AddressArbiter::SignalType>(type)) {
1513 case AddressArbiter::SignalType::Signal: 1515 case AddressArbiter::SignalType::Signal:
1514 return AddressArbiter::SignalToAddress(address, num_to_wake); 1516 return address_arbiter.SignalToAddress(address, num_to_wake);
1515 case AddressArbiter::SignalType::IncrementAndSignalIfEqual: 1517 case AddressArbiter::SignalType::IncrementAndSignalIfEqual:
1516 return AddressArbiter::IncrementAndSignalToAddressIfEqual(address, value, num_to_wake); 1518 return address_arbiter.IncrementAndSignalToAddressIfEqual(address, value, num_to_wake);
1517 case AddressArbiter::SignalType::ModifyByWaitingCountAndSignalIfEqual: 1519 case AddressArbiter::SignalType::ModifyByWaitingCountAndSignalIfEqual:
1518 return AddressArbiter::ModifyByWaitingCountAndSignalToAddressIfEqual(address, value, 1520 return address_arbiter.ModifyByWaitingCountAndSignalToAddressIfEqual(address, value,
1519 num_to_wake); 1521 num_to_wake);
1520 default: 1522 default:
1521 LOG_ERROR(Kernel_SVC, 1523 LOG_ERROR(Kernel_SVC,