From 1e50d88183b19dc8792d81f2af4b0aad836d48e3 Mon Sep 17 00:00:00 2001 From: joevt Date: Mon, 8 Apr 2024 22:07:23 -0700 Subject: [PATCH] ppcopcodes: Use macro to grab instruction fields. --- cpu/ppc/ppcopcodes.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cpu/ppc/ppcopcodes.cpp b/cpu/ppc/ppcopcodes.cpp index a219155..8a96d12 100644 --- a/cpu/ppc/ppcopcodes.cpp +++ b/cpu/ppc/ppcopcodes.cpp @@ -888,8 +888,8 @@ static void update_decrementer(uint32_t val) { } void dppc_interpreter::ppc_mfspr() { - uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 0x1F) << 5) | - ((ppc_cur_instruction >> 16) & 0x1F); + ppc_grab_dab(ppc_cur_instruction); + uint32_t ref_spr = (reg_b << 5) | reg_a; #ifdef CPU_PROFILING if (ref_spr > 31) { @@ -911,12 +911,12 @@ void dppc_interpreter::ppc_mfspr() { break; } - ppc_state.gpr[(ppc_cur_instruction >> 21) & 0x1F] = ppc_state.spr[ref_spr]; + ppc_state.gpr[reg_d] = ppc_state.spr[ref_spr]; } void dppc_interpreter::ppc_mtspr() { - uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 0x1F) << 5) | - ((ppc_cur_instruction >> 16) & 0x1F); + ppc_grab_dab(ppc_cur_instruction); + uint32_t ref_spr = (reg_b << 5) | reg_a; #ifdef CPU_PROFILING if (ref_spr > 31) { @@ -930,7 +930,7 @@ void dppc_interpreter::ppc_mtspr() { return; } - uint32_t val = ppc_state.gpr[(ppc_cur_instruction >> 21) & 0x1F]; + uint32_t val = ppc_state.gpr[reg_d]; ppc_state.spr[ref_spr] = val; switch (ref_spr) { @@ -980,9 +980,8 @@ void dppc_interpreter::ppc_mtspr() { } void dppc_interpreter::ppc_mftb() { - uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 0x1F) << 5) | - ((ppc_cur_instruction >> 16) & 0x1F); - int reg_d = (ppc_cur_instruction >> 21) & 0x1F; + ppc_grab_dab(ppc_cur_instruction); + uint32_t ref_spr = (reg_b << 5) | reg_a; uint64_t tbr_value = calc_tbr_value();