diff --git a/rpcs3/Emu/Cell/SPUThread.h b/rpcs3/Emu/Cell/SPUThread.h index 7172b8848a..2d91563a14 100644 --- a/rpcs3/Emu/Cell/SPUThread.h +++ b/rpcs3/Emu/Cell/SPUThread.h @@ -188,10 +188,10 @@ struct spu_channel_op_state struct alignas(16) spu_channel { // Low 32 bits contain value - atomic_t data; + atomic_t data{}; // Pending value to be inserted when it is possible in pop() or pop_wait() - atomic_t jostling_value; + atomic_t jostling_value{}; public: static constexpr u32 off_wait = 32; @@ -667,11 +667,11 @@ public: u8* reserv_base_addr = vm::g_reservations; // General-Purpose Registers - std::array gpr; - SPU_FPSCR fpscr; + std::array gpr{}; + SPU_FPSCR fpscr{}; // MFC command data - spu_mfc_cmd ch_mfc_cmd; + spu_mfc_cmd ch_mfc_cmd{}; // MFC command queue spu_mfc_cmd mfc_queue[16]{}; @@ -683,9 +683,9 @@ public: u64 mfc_last_timestamp = 0; // MFC proxy command data - spu_mfc_cmd mfc_prxy_cmd; + spu_mfc_cmd mfc_prxy_cmd{}; shared_mutex mfc_prxy_mtx; - atomic_t mfc_prxy_mask; + atomic_t mfc_prxy_mask = 0; // Tracks writes to MFC proxy command data union @@ -707,11 +707,11 @@ public: // Range Lock pointer atomic_t* range_lock{}; - u32 srr0; - u32 ch_tag_upd; - u32 ch_tag_mask; + u32 srr0 = 0; + u32 ch_tag_upd = 0; + u32 ch_tag_mask = 0; spu_channel ch_tag_stat; - u32 ch_stall_mask; + u32 ch_stall_mask = 0; spu_channel ch_stall_stat; spu_channel ch_atomic_stat; @@ -736,14 +736,14 @@ public: }; atomic_t ch_events; - bool interrupts_enabled; + bool interrupts_enabled = false; - u64 ch_dec_start_timestamp; // timestamp of writing decrementer value - u32 ch_dec_value; // written decrementer value + u64 ch_dec_start_timestamp = 0; // timestamp of writing decrementer value + u32 ch_dec_value = 0; // written decrementer value bool is_dec_frozen = false; std::pair read_dec() const; // Read decrementer - atomic_t run_ctrl; // SPU Run Control register (only provided to get latest data written) + atomic_t run_ctrl = 0; // SPU Run Control register (only provided to get latest data written) shared_mutex run_ctrl_mtx; struct alignas(8) status_npc_sync_var @@ -752,10 +752,10 @@ public: u32 npc; // SPU Next Program Counter register }; - atomic_t status_npc; - std::array int_ctrl; // SPU Class 0, 1, 2 Interrupt Management + atomic_t status_npc{}; + std::array int_ctrl{}; // SPU Class 0, 1, 2 Interrupt Management - std::array>, 32> spuq; // Event Queue Keys for SPU Thread + std::array>, 32> spuq{}; // Event Queue Keys for SPU Thread std::shared_ptr spup[64]; // SPU Ports spu_channel exit_status{}; // Threaded SPU exit status (not a channel, but the interface fits) atomic_t last_exit_status; // Value to be written in exit_status after checking group termination