From 90c021fc310ecd4d6290eaacd20e6ebc27cabcef Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 7 Feb 2015 23:06:35 +0300 Subject: [PATCH] Small fix --- rpcs3/Emu/Memory/vm.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index 894e3aff70..2e3aaae4ae 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -84,13 +84,11 @@ namespace vm { std::atomic m_owner; std::condition_variable m_cv; - std::atomic test; std::mutex m_cv_mutex; public: reservation_mutex_t() : m_owner(nullptr) - , test(0) { } @@ -116,16 +114,10 @@ namespace vm } do_notify = true; - - test++; - assert(test == 1); } __noinline void unlock() { - assert(test == 1); - test--; - NamedThreadBase* owner = GetCurrentNamedThread(); if (!m_owner.compare_exchange_strong(owner, nullptr)) @@ -206,7 +198,7 @@ namespace vm bool reservation_acquire(void* data, u32 addr, u32 size, const std::function& callback) { - const auto stamp0 = get_time(); + //const auto stamp0 = get_time(); bool broken = false; @@ -217,7 +209,7 @@ namespace vm std::lock_guard lock(g_reservation_mutex); // silent unlocking to prevent priority boost for threads going to break reservation - g_reservation_mutex.do_notify = false; + //g_reservation_mutex.do_notify = false; // break previous reservation if (g_reservation_addr) @@ -228,6 +220,9 @@ namespace vm // change memory protection to read-only _reservation_set(addr); + // may not be necessary, just for sure: + _mm_mfence(); + // set additional information g_reservation_addr = addr; g_reservation_owner = GetCurrentNamedThread(); @@ -313,6 +308,9 @@ namespace vm g_reservation_owner = GetCurrentNamedThread(); g_reservation_cb = nullptr; + // may not be necessary, just for sure: + _mm_mfence(); + // do the operation proc();