summaryrefslogtreecommitdiffstats
path: root/src/core/arm
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-03-15 20:54:40 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-06-27 17:35:50 +0200
commit25565dffd588006aace7530486e71ff318dc5550 (patch)
treee30556e18f3dae60ea6cb8d32b84fbcc42860d24 /src/core/arm
parentCPU_Manager: Correct stopping on SingleCore. (diff)
downloadyuzu-25565dffd588006aace7530486e71ff318dc5550.tar
yuzu-25565dffd588006aace7530486e71ff318dc5550.tar.gz
yuzu-25565dffd588006aace7530486e71ff318dc5550.tar.bz2
yuzu-25565dffd588006aace7530486e71ff318dc5550.tar.lz
yuzu-25565dffd588006aace7530486e71ff318dc5550.tar.xz
yuzu-25565dffd588006aace7530486e71ff318dc5550.tar.zst
yuzu-25565dffd588006aace7530486e71ff318dc5550.zip
Diffstat (limited to 'src/core/arm')
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.cpp22
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic_64.h10
-rw-r--r--src/core/arm/exclusive_monitor.h10
3 files changed, 20 insertions, 22 deletions
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
index 84b872f0b..2e664cfa8 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp
@@ -180,8 +180,6 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable&
return std::make_shared<Dynarmic::A64::Jit>(config);
}
-
-
void ARM_Dynarmic_64::Run() {
jit->Run();
}
@@ -297,24 +295,24 @@ DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(Memory::Memory& memory, std::
DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default;
-void DynarmicExclusiveMonitor::SetExclusive8(std::size_t core_index, VAddr addr) {
- monitor.Mark<u8>(core_index, addr, 1, [&]() -> u8 { return memory.Read8(addr); });
+u8 DynarmicExclusiveMonitor::ExclusiveRead8(std::size_t core_index, VAddr addr) {
+ return monitor.ReadAndMark<u8>(core_index, addr, [&]() -> u8 { return memory.Read8(addr); });
}
-void DynarmicExclusiveMonitor::SetExclusive16(std::size_t core_index, VAddr addr) {
- monitor.Mark<u16>(core_index, addr, 2, [&]() -> u16 { return memory.Read16(addr); });
+u16 DynarmicExclusiveMonitor::ExclusiveRead16(std::size_t core_index, VAddr addr) {
+ return monitor.ReadAndMark<u16>(core_index, addr, [&]() -> u16 { return memory.Read16(addr); });
}
-void DynarmicExclusiveMonitor::SetExclusive32(std::size_t core_index, VAddr addr) {
- monitor.Mark<u32>(core_index, addr, 4, [&]() -> u32 { return memory.Read32(addr); });
+u32 DynarmicExclusiveMonitor::ExclusiveRead32(std::size_t core_index, VAddr addr) {
+ return monitor.ReadAndMark<u32>(core_index, addr, [&]() -> u32 { return memory.Read32(addr); });
}
-void DynarmicExclusiveMonitor::SetExclusive64(std::size_t core_index, VAddr addr) {
- monitor.Mark<u64>(core_index, addr, 8, [&]() -> u64 { return memory.Read64(addr); });
+u64 DynarmicExclusiveMonitor::ExclusiveRead64(std::size_t core_index, VAddr addr) {
+ return monitor.ReadAndMark<u64>(core_index, addr, [&]() -> u64 { return memory.Read64(addr); });
}
-void DynarmicExclusiveMonitor::SetExclusive128(std::size_t core_index, VAddr addr) {
- monitor.Mark<u128>(core_index, addr, 16, [&]() -> u128 {
+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);
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.h b/src/core/arm/dynarmic/arm_dynarmic_64.h
index 3ead59f16..5560578ad 100644
--- a/src/core/arm/dynarmic/arm_dynarmic_64.h
+++ b/src/core/arm/dynarmic/arm_dynarmic_64.h
@@ -82,11 +82,11 @@ public:
explicit DynarmicExclusiveMonitor(Memory::Memory& memory, std::size_t core_count);
~DynarmicExclusiveMonitor() override;
- void SetExclusive8(std::size_t core_index, VAddr addr) override;
- void SetExclusive16(std::size_t core_index, VAddr addr) override;
- void SetExclusive32(std::size_t core_index, VAddr addr) override;
- void SetExclusive64(std::size_t core_index, VAddr addr) override;
- void SetExclusive128(std::size_t core_index, VAddr addr) override;
+ u8 ExclusiveRead8(std::size_t core_index, VAddr addr) override;
+ u16 ExclusiveRead16(std::size_t core_index, VAddr addr) override;
+ u32 ExclusiveRead32(std::size_t core_index, VAddr addr) override;
+ u64 ExclusiveRead64(std::size_t core_index, VAddr addr) override;
+ u128 ExclusiveRead128(std::size_t core_index, VAddr addr) override;
void ClearExclusive() override;
bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) override;
diff --git a/src/core/arm/exclusive_monitor.h b/src/core/arm/exclusive_monitor.h
index 2ee312eee..62f6e6023 100644
--- a/src/core/arm/exclusive_monitor.h
+++ b/src/core/arm/exclusive_monitor.h
@@ -18,11 +18,11 @@ class ExclusiveMonitor {
public:
virtual ~ExclusiveMonitor();
- virtual void SetExclusive8(std::size_t core_index, VAddr addr) = 0;
- virtual void SetExclusive16(std::size_t core_index, VAddr addr) = 0;
- virtual void SetExclusive32(std::size_t core_index, VAddr addr) = 0;
- virtual void SetExclusive64(std::size_t core_index, VAddr addr) = 0;
- virtual void SetExclusive128(std::size_t core_index, VAddr addr) = 0;
+ virtual u8 ExclusiveRead8(std::size_t core_index, VAddr addr) = 0;
+ virtual u16 ExclusiveRead16(std::size_t core_index, VAddr addr) = 0;
+ virtual u32 ExclusiveRead32(std::size_t core_index, VAddr addr) = 0;
+ virtual u64 ExclusiveRead64(std::size_t core_index, VAddr addr) = 0;
+ virtual u128 ExclusiveRead128(std::size_t core_index, VAddr addr) = 0;
virtual void ClearExclusive() = 0;
virtual bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) = 0;