summaryrefslogtreecommitdiffstats
path: root/src/core/arm/dynarmic/arm_dynarmic_64.cpp
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-06-19 01:56:59 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-06-27 17:36:26 +0200
commitb8df61c642310aeab3118f2637d4447740b8fcd3 (patch)
tree261ca5221675984cd2a00abc8855aeb5351a0cac /src/core/arm/dynarmic/arm_dynarmic_64.cpp
parentSVC: Add GetThreadPriority32 & SetThreadPriority32 (diff)
downloadyuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar.gz
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar.bz2
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar.lz
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar.xz
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.tar.zst
yuzu-b8df61c642310aeab3118f2637d4447740b8fcd3.zip
Diffstat (limited to 'src/core/arm/dynarmic/arm_dynarmic_64.cpp')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp65
1 files changed, 1 insertions, 64 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index 8e8f7ce0a..35a99e28a 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -10,6 +10,7 @@
#include "common/page_table.h"
#include "core/arm/cpu_interrupt_handler.h"
#include "core/arm/dynarmic/arm_dynarmic_64.h"
+#include "core/arm/dynarmic/arm_exclusive_monitor.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/core_timing_util.h"
@@ -323,68 +324,4 @@ void ARM_Dynarmic_64::PageTableChanged(Common::PageTable& page_table,
jit_cache.emplace(key, jit);
}
-DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(Memory::Memory& memory, std::size_t core_count)
- : monitor(core_count), memory{memory} {}
-
-DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default;
-
-u8 DynarmicExclusiveMonitor::ExclusiveRead8(std::size_t core_index, VAddr addr) {
- return monitor.ReadAndMark<u8>(core_index, addr, [&]() -> u8 { return memory.Read8(addr); });
-}
-
-u16 DynarmicExclusiveMonitor::ExclusiveRead16(std::size_t core_index, VAddr addr) {
- return monitor.ReadAndMark<u16>(core_index, addr, [&]() -> u16 { return memory.Read16(addr); });
-}
-
-u32 DynarmicExclusiveMonitor::ExclusiveRead32(std::size_t core_index, VAddr addr) {
- return monitor.ReadAndMark<u32>(core_index, addr, [&]() -> u32 { return memory.Read32(addr); });
-}
-
-u64 DynarmicExclusiveMonitor::ExclusiveRead64(std::size_t core_index, VAddr addr) {
- return monitor.ReadAndMark<u64>(core_index, addr, [&]() -> u64 { return memory.Read64(addr); });
-}
-
-u128 DynarmicExclusiveMonitor::ExclusiveRead128(std::size_t core_index, VAddr addr) {
- return monitor.ReadAndMark<u128>(core_index, addr, [&]() -> u128 {
- u128 result;
- result[0] = memory.Read64(addr);
- result[1] = memory.Read64(addr + 8);
- return result;
- });
-}
-
-void DynarmicExclusiveMonitor::ClearExclusive() {
- monitor.Clear();
-}
-
-bool DynarmicExclusiveMonitor::ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) {
- return monitor.DoExclusiveOperation<u8>(core_index, vaddr, [&](u8 expected) -> bool {
- return memory.WriteExclusive8(vaddr, value, expected);
- });
-}
-
-bool DynarmicExclusiveMonitor::ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) {
- return monitor.DoExclusiveOperation<u16>(core_index, vaddr, [&](u16 expected) -> bool {
- return memory.WriteExclusive16(vaddr, value, expected);
- });
-}
-
-bool DynarmicExclusiveMonitor::ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) {
- return monitor.DoExclusiveOperation<u32>(core_index, vaddr, [&](u32 expected) -> bool {
- return memory.WriteExclusive32(vaddr, value, expected);
- });
-}
-
-bool DynarmicExclusiveMonitor::ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) {
- return monitor.DoExclusiveOperation<u64>(core_index, vaddr, [&](u64 expected) -> bool {
- return memory.WriteExclusive64(vaddr, value, expected);
- });
-}
-
-bool DynarmicExclusiveMonitor::ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) {
- return monitor.DoExclusiveOperation<u128>(core_index, vaddr, [&](u128 expected) -> bool {
- return memory.WriteExclusive128(vaddr, value, expected);
- });
-}
-
} // namespace Core