From 6805d8c7e0791ec81acab1a9a4c0ad4d8c462996 Mon Sep 17 00:00:00 2001 From: Eladash Date: Thu, 12 May 2022 09:49:18 +0300 Subject: [PATCH] SPU: Fix race on SPU Mailbox last value reading --- rpcs3/Emu/Cell/SPUThread.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Cell/SPUThread.h b/rpcs3/Emu/Cell/SPUThread.h index 70df12a756..ae2a9f83a0 100644 --- a/rpcs3/Emu/Cell/SPUThread.h +++ b/rpcs3/Emu/Cell/SPUThread.h @@ -369,7 +369,7 @@ struct spu_channel_4_t { u8 waiting; u8 count; - u8 _pad[2]; + u16 value3_inval; u32 value0; u32 value1; u32 value2; @@ -396,7 +396,12 @@ public: case 0: data.value0 = value; break; case 1: data.value1 = value; break; case 2: data.value2 = value; break; - default: data.count = 4; + default: + { + data.count = 4; + data.value3_inval++; // Ensure the SPU reads the most recent value3 write in try_pop by re-loading + break; + } } if (data.waiting)