summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Lioncash2018-07-23 20:33:15 -0400
committerGravatar Lioncash2018-07-23 20:54:57 -0400
commite12c84d5c542c07e6ea62c23a85c76d6f4c7c07f (patch)
treea68b0f4781b750d1f8bad0b8522a43c82fcc8e16
parentMerge pull request #695 from DarkLordZach/nro-asset (diff)
downloadyuzu-e12c84d5c542c07e6ea62c23a85c76d6f4c7c07f.tar.gz
yuzu-e12c84d5c542c07e6ea62c23a85c76d6f4c7c07f.tar.xz
yuzu-e12c84d5c542c07e6ea62c23a85c76d6f4c7c07f.zip
exclusive_monitor: Use consistent type alias for u64
Uses the same type aliases we use for virtual addresses, and converts one lingering usage of std::array<uint64_t, 2> to u128 for consistency.
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.cpp13
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.h13
-rw-r--r--src/core/arm/exclusive_monitor.h14
3 files changed, 18 insertions, 22 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp
index 83c09db2b..d23adb28a 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic.cpp
@@ -257,7 +257,7 @@ void ARM_Dynarmic::PageTableChanged() {
257DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {} 257DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {}
258DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; 258DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default;
259 259
260void DynarmicExclusiveMonitor::SetExclusive(size_t core_index, u64 addr) { 260void DynarmicExclusiveMonitor::SetExclusive(size_t core_index, VAddr addr) {
261 // Size doesn't actually matter. 261 // Size doesn't actually matter.
262 monitor.Mark(core_index, addr, 16); 262 monitor.Mark(core_index, addr, 16);
263} 263}
@@ -266,28 +266,27 @@ void DynarmicExclusiveMonitor::ClearExclusive() {
266 monitor.Clear(); 266 monitor.Clear();
267} 267}
268 268
269bool DynarmicExclusiveMonitor::ExclusiveWrite8(size_t core_index, u64 vaddr, u8 value) { 269bool DynarmicExclusiveMonitor::ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) {
270 return monitor.DoExclusiveOperation(core_index, vaddr, 1, 270 return monitor.DoExclusiveOperation(core_index, vaddr, 1,
271 [&] { Memory::Write8(vaddr, value); }); 271 [&] { Memory::Write8(vaddr, value); });
272} 272}
273 273
274bool DynarmicExclusiveMonitor::ExclusiveWrite16(size_t core_index, u64 vaddr, u16 value) { 274bool DynarmicExclusiveMonitor::ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) {
275 return monitor.DoExclusiveOperation(core_index, vaddr, 2, 275 return monitor.DoExclusiveOperation(core_index, vaddr, 2,
276 [&] { Memory::Write16(vaddr, value); }); 276 [&] { Memory::Write16(vaddr, value); });
277} 277}
278 278
279bool DynarmicExclusiveMonitor::ExclusiveWrite32(size_t core_index, u64 vaddr, u32 value) { 279bool DynarmicExclusiveMonitor::ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) {
280 return monitor.DoExclusiveOperation(core_index, vaddr, 4, 280 return monitor.DoExclusiveOperation(core_index, vaddr, 4,
281 [&] { Memory::Write32(vaddr, value); }); 281 [&] { Memory::Write32(vaddr, value); });
282} 282}
283 283
284bool DynarmicExclusiveMonitor::ExclusiveWrite64(size_t core_index, u64 vaddr, u64 value) { 284bool DynarmicExclusiveMonitor::ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) {
285 return monitor.DoExclusiveOperation(core_index, vaddr, 8, 285 return monitor.DoExclusiveOperation(core_index, vaddr, 8,
286 [&] { Memory::Write64(vaddr, value); }); 286 [&] { Memory::Write64(vaddr, value); });
287} 287}
288 288
289bool DynarmicExclusiveMonitor::ExclusiveWrite128(size_t core_index, u64 vaddr, 289bool DynarmicExclusiveMonitor::ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) {
290 std::array<std::uint64_t, 2> value) {
291 return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] { 290 return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] {
292 Memory::Write64(vaddr, value[0]); 291 Memory::Write64(vaddr, value[0]);
293 Memory::Write64(vaddr, value[1]); 292 Memory::Write64(vaddr, value[1]);
diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h
index 0fa8b417c..350f61fd2 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.h
+++ b/src/core/arm/dynarmic/arm_dynarmic.h
@@ -68,15 +68,14 @@ public:
68 explicit DynarmicExclusiveMonitor(size_t core_count); 68 explicit DynarmicExclusiveMonitor(size_t core_count);
69 ~DynarmicExclusiveMonitor(); 69 ~DynarmicExclusiveMonitor();
70 70
71 void SetExclusive(size_t core_index, u64 addr) override; 71 void SetExclusive(size_t core_index, VAddr addr) override;
72 void ClearExclusive() override; 72 void ClearExclusive() override;
73 73
74 bool ExclusiveWrite8(size_t core_index, u64 vaddr, u8 value) override; 74 bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) override;
75 bool ExclusiveWrite16(size_t core_index, u64 vaddr, u16 value) override; 75 bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) override;
76 bool ExclusiveWrite32(size_t core_index, u64 vaddr, u32 value) override; 76 bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) override;
77 bool ExclusiveWrite64(size_t core_index, u64 vaddr, u64 value) override; 77 bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) override;
78 bool ExclusiveWrite128(size_t core_index, u64 vaddr, 78 bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) override;
79 std::array<std::uint64_t, 2> value) override;
80 79
81private: 80private:
82 friend class ARM_Dynarmic; 81 friend class ARM_Dynarmic;
diff --git a/src/core/arm/exclusive_monitor.h b/src/core/arm/exclusive_monitor.h
index acfcdb94c..13671ed7a 100644
--- a/src/core/arm/exclusive_monitor.h
+++ b/src/core/arm/exclusive_monitor.h
@@ -4,20 +4,18 @@
4 4
5#pragma once 5#pragma once
6 6
7#include <array>
8#include "common/common_types.h" 7#include "common/common_types.h"
9 8
10class ExclusiveMonitor { 9class ExclusiveMonitor {
11public: 10public:
12 virtual ~ExclusiveMonitor(); 11 virtual ~ExclusiveMonitor();
13 12
14 virtual void SetExclusive(size_t core_index, u64 addr) = 0; 13 virtual void SetExclusive(size_t core_index, VAddr addr) = 0;
15 virtual void ClearExclusive() = 0; 14 virtual void ClearExclusive() = 0;
16 15
17 virtual bool ExclusiveWrite8(size_t core_index, u64 vaddr, u8 value) = 0; 16 virtual bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) = 0;
18 virtual bool ExclusiveWrite16(size_t core_index, u64 vaddr, u16 value) = 0; 17 virtual bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) = 0;
19 virtual bool ExclusiveWrite32(size_t core_index, u64 vaddr, u32 value) = 0; 18 virtual bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) = 0;
20 virtual bool ExclusiveWrite64(size_t core_index, u64 vaddr, u64 value) = 0; 19 virtual bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) = 0;
21 virtual bool ExclusiveWrite128(size_t core_index, u64 vaddr, 20 virtual bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) = 0;
22 std::array<std::uint64_t, 2> value) = 0;
23}; 21};