diff options
| author | 2018-07-23 20:33:15 -0400 | |
|---|---|---|
| committer | 2018-07-23 20:54:57 -0400 | |
| commit | e12c84d5c542c07e6ea62c23a85c76d6f4c7c07f (patch) | |
| tree | a68b0f4781b750d1f8bad0b8522a43c82fcc8e16 /src | |
| parent | Merge pull request #695 from DarkLordZach/nro-asset (diff) | |
| download | yuzu-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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic.cpp | 13 | ||||
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic.h | 13 | ||||
| -rw-r--r-- | src/core/arm/exclusive_monitor.h | 14 |
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() { | |||
| 257 | DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {} | 257 | DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {} |
| 258 | DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; | 258 | DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; |
| 259 | 259 | ||
| 260 | void DynarmicExclusiveMonitor::SetExclusive(size_t core_index, u64 addr) { | 260 | void 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 | ||
| 269 | bool DynarmicExclusiveMonitor::ExclusiveWrite8(size_t core_index, u64 vaddr, u8 value) { | 269 | bool 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 | ||
| 274 | bool DynarmicExclusiveMonitor::ExclusiveWrite16(size_t core_index, u64 vaddr, u16 value) { | 274 | bool 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 | ||
| 279 | bool DynarmicExclusiveMonitor::ExclusiveWrite32(size_t core_index, u64 vaddr, u32 value) { | 279 | bool 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 | ||
| 284 | bool DynarmicExclusiveMonitor::ExclusiveWrite64(size_t core_index, u64 vaddr, u64 value) { | 284 | bool 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 | ||
| 289 | bool DynarmicExclusiveMonitor::ExclusiveWrite128(size_t core_index, u64 vaddr, | 289 | bool 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 | ||
| 81 | private: | 80 | private: |
| 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 | ||
| 10 | class ExclusiveMonitor { | 9 | class ExclusiveMonitor { |
| 11 | public: | 10 | public: |
| 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 | }; |