From bd0b292b39518b58590ebd952b064190246d930e Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Sat, 7 Nov 2020 01:17:32 +0300 Subject: [PATCH] atomic.cpp: adjust assumed pointer mask Increase waiter mask (allow 65535 waiters). Assume 47-bit pointers instead of 48-bit. --- rpcs3/util/atomic.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rpcs3/util/atomic.cpp b/rpcs3/util/atomic.cpp index 079b9b359f..2a304e31cb 100644 --- a/rpcs3/util/atomic.cpp +++ b/rpcs3/util/atomic.cpp @@ -22,11 +22,11 @@ static constexpr uint s_hashtable_power = 16; // Total number of entries, should be a power of 2. static constexpr std::uintptr_t s_hashtable_size = 1u << s_hashtable_power; -// Pointer mask without bits used as hash, assuming signed 48-bit pointers. -static constexpr u64 s_pointer_mask = s_hashtable_power > 7 ? 0xffff'ffff'ffff & ~((s_hashtable_size - 1)) : 0xffff'ffff'ffff; +// Pointer mask without bits used as hash, assuming 47-bit pointers. +static constexpr u64 s_pointer_mask = s_hashtable_power > 7 ? 0x7fff'ffff'ffff & ~((s_hashtable_size - 1)) : 0x7fff'ffff'ffff; -// Max number of waiters is 32767. -static constexpr u64 s_waiter_mask = s_hashtable_power > 7 ? 0x7fff'0000'0000'0000 : 0x7f00'0000'0000'0000; +// Max number of waiters is 65535. +static constexpr u64 s_waiter_mask = s_hashtable_power > 7 ? 0x7fff'8000'0000'0000 : 0x7f80'0000'0000'0000; // Bit indicates that more than one. static constexpr u64 s_collision_bit = 0x8000'0000'0000'0000;