diff --git a/cpu/ppc/poweropcodes.cpp b/cpu/ppc/poweropcodes.cpp
index 44b2135..6e2b3c1 100644
--- a/cpu/ppc/poweropcodes.cpp
+++ b/cpu/ppc/poweropcodes.cpp
@@ -42,7 +42,7 @@ inline void power_setsoov(uint32_t a, uint32_t b, uint32_t d) {
}
}
-void power_abs() {
+void dppc_interpreter::power_abs() {
ppc_grab_regsda();
if (ppc_result_a == 0x80000000) {
ppc_result_d = ppc_result_a;
@@ -59,7 +59,7 @@ void power_abs() {
ppc_store_result_regd();
}
-void power_clcs() {
+void dppc_interpreter::power_clcs() {
ppc_grab_regsda();
switch (reg_a) {
case 12:
@@ -80,7 +80,7 @@ void power_clcs() {
ppc_store_result_regd();
}
-void power_div() {
+void dppc_interpreter::power_div() {
ppc_grab_regsdab();
ppc_result_d = (ppc_result_a | ppc_state.spr[SPR::MQ]) / ppc_result_b;
ppc_state.spr[SPR::MQ] = (ppc_result_a | ppc_state.spr[SPR::MQ]) % ppc_result_b;
@@ -93,7 +93,7 @@ void power_div() {
ppc_store_result_regd();
}
-void power_divs() {
+void dppc_interpreter::power_divs() {
ppc_grab_regsdab();
ppc_result_d = ppc_result_a / ppc_result_b;
ppc_state.spr[SPR::MQ] = (ppc_result_a % ppc_result_b);
@@ -106,7 +106,7 @@ void power_divs() {
ppc_store_result_regd();
}
-void power_doz() {
+void dppc_interpreter::power_doz() {
ppc_grab_regsdab();
if (((int32_t)ppc_result_a) > ((int32_t)ppc_result_b)) {
ppc_result_d = 0;
@@ -120,7 +120,7 @@ void power_doz() {
ppc_store_result_rega();
}
-void power_dozi() {
+void dppc_interpreter::power_dozi() {
ppc_grab_regsdab();
if (((int32_t)ppc_result_a) > simm) {
ppc_result_d = 0;
@@ -130,7 +130,7 @@ void power_dozi() {
ppc_store_result_rega();
}
-void power_lscbx() {
+void dppc_interpreter::power_lscbx() {
ppc_grab_regsdab();
uint32_t bytes_copied = 0;
bool match_found = false;
@@ -191,7 +191,7 @@ void power_lscbx() {
ppc_store_result_regd();
}
-void power_maskg() {
+void dppc_interpreter::power_maskg() {
ppc_grab_regssab();
uint32_t mask_start = ppc_result_d & 31;
uint32_t mask_end = ppc_result_b & 31;
@@ -218,7 +218,7 @@ void power_maskg() {
ppc_store_result_rega();
}
-void power_maskir() {
+void dppc_interpreter::power_maskir() {
ppc_grab_regssab();
uint32_t mask_insert = ppc_result_a;
uint32_t insert_rot = 0x80000000;
@@ -238,7 +238,7 @@ void power_maskir() {
ppc_store_result_rega();
}
-void power_mul() {
+void dppc_interpreter::power_mul() {
ppc_grab_regsdab();
uint64_t product;
@@ -252,7 +252,7 @@ void power_mul() {
ppc_store_result_regd();
}
-void power_nabs() {
+void dppc_interpreter::power_nabs() {
ppc_grab_regsda();
ppc_result_d = (0x80000000 | ppc_result_a);
@@ -262,7 +262,7 @@ void power_nabs() {
ppc_store_result_regd();
}
-void power_rlmi() {
+void dppc_interpreter::power_rlmi() {
ppc_grab_regssab();
unsigned rot_mb = (ppc_cur_instruction >> 6) & 31;
unsigned rot_me = (ppc_cur_instruction >> 1) & 31;
@@ -287,7 +287,7 @@ void power_rlmi() {
ppc_store_result_rega();
}
-void power_rrib() {
+void dppc_interpreter::power_rrib() {
ppc_grab_regssab();
if (ppc_result_d & 0x80000000) {
@@ -302,7 +302,7 @@ void power_rrib() {
ppc_store_result_rega();
}
-void power_sle() {
+void dppc_interpreter::power_sle() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
uint32_t rot_amt = ppc_result_b & 31;
@@ -319,7 +319,7 @@ void power_sle() {
ppc_store_result_rega();
}
-void power_sleq() {
+void dppc_interpreter::power_sleq() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
uint32_t rot_amt = ppc_result_b & 31;
@@ -345,7 +345,7 @@ void power_sleq() {
ppc_store_result_rega();
}
-void power_sliq() {
+void dppc_interpreter::power_sliq() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
unsigned rot_sh = (ppc_cur_instruction >> 11) & 31;
@@ -371,7 +371,7 @@ void power_sliq() {
ppc_store_result_rega();
}
-void power_slliq() {
+void dppc_interpreter::power_slliq() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
unsigned rot_sh = (ppc_cur_instruction >> 11) & 31;
@@ -397,23 +397,23 @@ void power_slliq() {
ppc_store_result_rega();
}
-void power_sllq() {
+void dppc_interpreter::power_sllq() {
LOG_F(WARNING, "OOPS! Placeholder for sllq!!! \n");
}
-void power_slq() {
+void dppc_interpreter::power_slq() {
LOG_F(WARNING, "OOPS! Placeholder for slq!!! \n");
}
-void power_sraiq() {
+void dppc_interpreter::power_sraiq() {
LOG_F(WARNING, "OOPS! Placeholder for sraiq!!! \n");
}
-void power_sraq() {
+void dppc_interpreter::power_sraq() {
LOG_F(WARNING, "OOPS! Placeholder for sraq!!! \n");
}
-void power_sre() {
+void dppc_interpreter::power_sre() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
uint32_t rot_amt = ppc_result_b & 31;
@@ -428,11 +428,11 @@ void power_sre() {
ppc_store_result_rega();
}
-void power_srea() {
+void dppc_interpreter::power_srea() {
LOG_F(WARNING, "OOPS! Placeholder for srea!!! \n");
}
-void power_sreq() {
+void dppc_interpreter::power_sreq() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
unsigned rot_sh = ppc_result_b & 31;
@@ -458,7 +458,7 @@ void power_sreq() {
ppc_store_result_rega();
}
-void power_sriq() {
+void dppc_interpreter::power_sriq() {
ppc_grab_regssa();
uint32_t insert_mask = 0;
unsigned rot_sh = (ppc_cur_instruction >> 11) & 31;
@@ -484,14 +484,14 @@ void power_sriq() {
ppc_store_result_rega();
}
-void power_srliq() {
+void dppc_interpreter::power_srliq() {
LOG_F(WARNING, "OOPS! Placeholder for slriq!!! \n");
}
-void power_srlq() {
+void dppc_interpreter::power_srlq() {
LOG_F(WARNING, "OOPS! Placeholder for slrq!!! \n");
}
-void power_srq() {
+void dppc_interpreter::power_srq() {
LOG_F(WARNING, "OOPS! Placeholder for srq!!! \n");
}
\ No newline at end of file
diff --git a/cpu/ppc/ppcemu.h b/cpu/ppc/ppcemu.h
index 64de5bd..628e164 100644
--- a/cpu/ppc/ppcemu.h
+++ b/cpu/ppc/ppcemu.h
@@ -303,6 +303,7 @@ void ppc_fp_changecrf1();
extern MemCtrlBase* mem_ctrl_instance;
// The functions used by the PowerPC processor
+namespace dppc_interpreter {
extern void ppc_bcctr();
extern void ppc_bcctrl();
extern void ppc_bclr();
@@ -541,12 +542,7 @@ extern void power_sriq();
extern void power_srliq();
extern void power_srlq();
extern void power_srq();
-
-// Gekko instructions
-extern void ppc_psq_l();
-extern void ppc_psq_lu();
-extern void ppc_psq_st();
-extern void ppc_psq_stu();
+} // namespace dppc_interpreter
// AltiVec instructions
diff --git a/cpu/ppc/ppcexec.cpp b/cpu/ppc/ppcexec.cpp
index 582d202..807bc01 100644
--- a/cpu/ppc/ppcexec.cpp
+++ b/cpu/ppc/ppcexec.cpp
@@ -35,6 +35,7 @@ along with this program. If not, see .
#define NEW_TBR_UPDATE_ALGO
using namespace std;
+using namespace dppc_interpreter;
MemCtrlBase* mem_ctrl_instance = 0;
@@ -72,17 +73,17 @@ uint8_t tbr_factor; /* cycles_count to TBR freq ratio in 2^x units */
/** Primary opcode (bits 0...5) lookup table. */
static PPCOpcode OpcodeGrabber[] = {
- ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_twi, ppc_opcode4, ppc_illegalop,
- ppc_illegalop, ppc_mulli, ppc_subfic, power_dozi, ppc_cmpli, ppc_cmpi,
- ppc_addic, ppc_addicdot, ppc_addi, ppc_addis, ppc_opcode16, ppc_sc,
- ppc_opcode18, ppc_opcode19, ppc_rlwimi, ppc_rlwinm, power_rlmi, ppc_rlwnm,
- ppc_ori, ppc_oris, ppc_xori, ppc_xoris, ppc_andidot, ppc_andisdot,
- ppc_illegalop, ppc_opcode31, ppc_lwz, ppc_lwzu, ppc_lbz, ppc_lbzu,
- ppc_stw, ppc_stwu, ppc_stb, ppc_stbu, ppc_lhz, ppc_lhzu,
- ppc_lha, ppc_lhau, ppc_sth, ppc_sthu, ppc_lmw, ppc_stmw,
- ppc_lfs, ppc_lfsu, ppc_lfd, ppc_lfdu, ppc_stfs, ppc_stfsu,
- ppc_stfd, ppc_stfdu, ppc_psq_l, ppc_psq_lu, ppc_illegalop, ppc_illegalop,
- ppc_psq_st, ppc_psq_stu, ppc_illegalop, ppc_opcode63};
+ ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_twi, ppc_opcode4, ppc_illegalop,
+ ppc_illegalop, ppc_mulli, ppc_subfic, power_dozi, ppc_cmpli, ppc_cmpi,
+ ppc_addic, ppc_addicdot, ppc_addi, ppc_addis, ppc_opcode16, ppc_sc,
+ ppc_opcode18, ppc_opcode19, ppc_rlwimi, ppc_rlwinm, power_rlmi, ppc_rlwnm,
+ ppc_ori, ppc_oris, ppc_xori, ppc_xoris, ppc_andidot, ppc_andisdot,
+ ppc_illegalop, ppc_opcode31, ppc_lwz, ppc_lwzu, ppc_lbz, ppc_lbzu,
+ ppc_stw, ppc_stwu, ppc_stb, ppc_stbu, ppc_lhz, ppc_lhzu,
+ ppc_lha, ppc_lhau, ppc_sth, ppc_sthu, ppc_lmw, ppc_stmw,
+ ppc_lfs, ppc_lfsu, ppc_lfd, ppc_lfdu, ppc_stfs, ppc_stfsu,
+ ppc_stfd, ppc_stfdu, ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_illegalop,
+ ppc_illegalop, ppc_illegalop, ppc_illegalop, ppc_opcode63};
/** Lookup tables for branch instructions. */
static PPCOpcode SubOpcode16Grabber[] = {ppc_bc, ppc_bcl, ppc_bca, ppc_bcla};
@@ -577,29 +578,29 @@ void initialize_ppc_opcode_tables() {
SubOpcode31Grabber[978] = ppc_tlbld;
SubOpcode31Grabber[1010] = ppc_tlbli;
- SubOpcode63Grabber[18] = ppc_fdivs;
- SubOpcode63Grabber[20] = ppc_fsubs;
- SubOpcode63Grabber[22] = ppc_fsqrts;
- SubOpcode63Grabber[24] = ppc_fres;
+ SubOpcode59Grabber[18] = ppc_fdivs;
+ SubOpcode59Grabber[20] = ppc_fsubs;
+ SubOpcode59Grabber[22] = ppc_fsqrts;
+ SubOpcode59Grabber[24] = ppc_fres;
for (int i = 25; i < 1024; i += 32) {
- SubOpcode63Grabber[i] = ppc_fmults;
+ SubOpcode59Grabber[i] = ppc_fmults;
}
for (int i = 28; i < 1024; i += 32) {
- SubOpcode63Grabber[i] = ppc_fmsubs;
+ SubOpcode59Grabber[i] = ppc_fmsubs;
}
for (int i = 29; i < 1024; i += 32) {
- SubOpcode63Grabber[i] = ppc_fmadds;
+ SubOpcode59Grabber[i] = ppc_fmadds;
}
for (int i = 30; i < 1024; i += 32) {
- SubOpcode63Grabber[i] = ppc_fnmsubs;
+ SubOpcode59Grabber[i] = ppc_fnmsubs;
}
for (int i = 31; i < 1024; i += 32) {
- SubOpcode63Grabber[i] = ppc_fnmadds;
+ SubOpcode59Grabber[i] = ppc_fnmadds;
}
SubOpcode63Grabber[0] = ppc_fcmpu;
diff --git a/cpu/ppc/ppcfpopcodes.cpp b/cpu/ppc/ppcfpopcodes.cpp
index b0bfa3b..b3eb088 100644
--- a/cpu/ppc/ppcfpopcodes.cpp
+++ b/cpu/ppc/ppcfpopcodes.cpp
@@ -371,7 +371,7 @@ void ppc_changecrf1() {
}
// Floating Point Arithmetic
-void ppc_fadd() {
+void dppc_interpreter::ppc_fadd() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, false, 58)) {
@@ -383,7 +383,7 @@ void ppc_fadd() {
ppc_changecrf1();
}
-void ppc_fsub() {
+void dppc_interpreter::ppc_fsub() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, false, 56)) {
@@ -395,7 +395,7 @@ void ppc_fsub() {
ppc_changecrf1();
}
-void ppc_fdiv() {
+void dppc_interpreter::ppc_fdiv() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, false, 36)) {
@@ -407,7 +407,7 @@ void ppc_fdiv() {
ppc_changecrf1();
}
-void ppc_fmult() {
+void dppc_interpreter::ppc_fmult() {
ppc_grab_regsfpdac(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, false, 50)) {
@@ -419,7 +419,7 @@ void ppc_fmult() {
ppc_changecrf1();
}
-void ppc_fmadd() {
+void dppc_interpreter::ppc_fmadd() {
ppc_grab_regsfpdabc(false);
if (!ppc_confirm_inf_nan(reg_a, reg_c, false, 50)) {
@@ -435,7 +435,7 @@ void ppc_fmadd() {
ppc_changecrf1();
}
-void ppc_fmsub() {
+void dppc_interpreter::ppc_fmsub() {
ppc_grab_regsfpdabc(false);
if (!ppc_confirm_inf_nan(reg_a, reg_c, false, 50)) {
@@ -451,7 +451,7 @@ void ppc_fmsub() {
ppc_changecrf1();
}
-void ppc_fnmadd() {
+void dppc_interpreter::ppc_fnmadd() {
ppc_grab_regsfpdabc(false);
if (!ppc_confirm_inf_nan(reg_a, reg_c, false, 50)) {
@@ -468,7 +468,7 @@ void ppc_fnmadd() {
ppc_changecrf1();
}
-void ppc_fnmsub() {
+void dppc_interpreter::ppc_fnmsub() {
ppc_grab_regsfpdabc(false);
if (!ppc_confirm_inf_nan(reg_a, reg_c, false, 50)) {
@@ -485,7 +485,7 @@ void ppc_fnmsub() {
ppc_changecrf1();
}
-void ppc_fadds() {
+void dppc_interpreter::ppc_fadds() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, true, 58)) {
@@ -498,7 +498,7 @@ void ppc_fadds() {
ppc_changecrf1();
}
-void ppc_fsubs() {
+void dppc_interpreter::ppc_fsubs() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, true, 56)) {
@@ -511,7 +511,7 @@ void ppc_fsubs() {
ppc_changecrf1();
}
-void ppc_fmults() {
+void dppc_interpreter::ppc_fmults() {
ppc_grab_regsfpdac(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, true, 50)) {
@@ -524,7 +524,7 @@ void ppc_fmults() {
ppc_changecrf1();
}
-void ppc_fdivs() {
+void dppc_interpreter::ppc_fdivs() {
ppc_grab_regsfpdab(false);
if (!ppc_confirm_inf_nan(reg_a, reg_b, true, 36)) {
@@ -537,7 +537,7 @@ void ppc_fdivs() {
ppc_changecrf1();
}
-void ppc_fmadds() {
+void dppc_interpreter::ppc_fmadds() {
ppc_grab_regsfpdabc(false);
float intermediate;
@@ -556,7 +556,7 @@ void ppc_fmadds() {
ppc_changecrf1();
}
-void ppc_fmsubs() {
+void dppc_interpreter::ppc_fmsubs() {
ppc_grab_regsfpdabc(false);
float intermediate;
@@ -575,7 +575,7 @@ void ppc_fmsubs() {
ppc_changecrf1();
}
-void ppc_fnmadds() {
+void dppc_interpreter::ppc_fnmadds() {
ppc_grab_regsfpdabc(false);
float intermediate;
@@ -596,7 +596,7 @@ void ppc_fnmadds() {
ppc_changecrf1();
}
-void ppc_fnmsubs() {
+void dppc_interpreter::ppc_fnmsubs() {
ppc_grab_regsfpdabc(false);
float intermediate;
@@ -617,7 +617,7 @@ void ppc_fnmsubs() {
ppc_changecrf1();
}
-void ppc_fabs() {
+void dppc_interpreter::ppc_fabs() {
ppc_grab_regsfpdb(false);
ppc_dblresult64_d = abs(ppc_dblresult64_b);
@@ -628,7 +628,7 @@ void ppc_fabs() {
ppc_changecrf1();
}
-void ppc_fnabs() {
+void dppc_interpreter::ppc_fnabs() {
ppc_grab_regsfpdb(false);
ppc_dblresult64_d = abs(ppc_dblresult64_b);
@@ -640,7 +640,7 @@ void ppc_fnabs() {
ppc_changecrf1();
}
-void ppc_fneg() {
+void dppc_interpreter::ppc_fneg() {
ppc_grab_regsfpdb(false);
ppc_dblresult64_d = -ppc_dblresult64_d;
@@ -651,7 +651,7 @@ void ppc_fneg() {
ppc_changecrf1();
}
-void ppc_fsel() {
+void dppc_interpreter::ppc_fsel() {
ppc_grab_regsfpdabc(false);
if (ppc_dblresult64_a >= 0.0) {
@@ -666,7 +666,7 @@ void ppc_fsel() {
ppc_changecrf1();
}
-void ppc_fsqrt() {
+void dppc_interpreter::ppc_fsqrt() {
ppc_grab_regsfpdb(false);
ppc_dblresult64_d = std::sqrt(ppc_dblresult64_b);
ppc_store_dfpresult(false);
@@ -675,7 +675,7 @@ void ppc_fsqrt() {
ppc_changecrf1();
}
-void ppc_fsqrts() {
+void dppc_interpreter::ppc_fsqrts() {
ppc_grab_regsfpdb(true);
uint32_t test = (uint32_t)ppc_result64_b;
test += 127 << 23;
@@ -688,7 +688,7 @@ void ppc_fsqrts() {
ppc_changecrf1();
}
-void ppc_frsqrte() {
+void dppc_interpreter::ppc_frsqrte() {
ppc_grab_regsfpdb(false);
double testd2 = (double)ppc_result64_b;
for (int i = 0; i < 10; i++) {
@@ -702,7 +702,7 @@ void ppc_frsqrte() {
ppc_changecrf1();
}
-void ppc_frsp() {
+void dppc_interpreter::ppc_frsp() {
ppc_grab_regsfpdb(false);
double testd2 = (double)ppc_result64_b;
float testf2 = (float)testd2;
@@ -713,7 +713,7 @@ void ppc_frsp() {
ppc_changecrf1();
}
-void ppc_fres() {
+void dppc_interpreter::ppc_fres() {
ppc_grab_regsfpdb(false);
float testf2 = (float)ppc_dblresult64_b;
testf2 = 1 / testf2;
@@ -724,7 +724,7 @@ void ppc_fres() {
ppc_changecrf1();
}
-void ppc_fctiw() {
+void dppc_interpreter::ppc_fctiw() {
ppc_grab_regsfpdb(false);
switch (ppc_state.fpscr & 0x3) {
@@ -744,7 +744,7 @@ void ppc_fctiw() {
ppc_changecrf1();
}
-void ppc_fctiwz() {
+void dppc_interpreter::ppc_fctiwz() {
ppc_grab_regsfpdb(false);
ppc_result64_d = round_to_zero(ppc_dblresult64_b);
@@ -756,7 +756,7 @@ void ppc_fctiwz() {
// Floating Point Store and Load
-void ppc_lfs() {
+void dppc_interpreter::ppc_lfs() {
ppc_grab_regsfpdia(true);
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -765,7 +765,7 @@ void ppc_lfs() {
}
-void ppc_lfsu() {
+void dppc_interpreter::ppc_lfsu() {
ppc_grab_regsfpdia(true);
if (reg_a == 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -779,14 +779,14 @@ void ppc_lfsu() {
}
}
-void ppc_lfsx() {
+void dppc_interpreter::ppc_lfsx() {
ppc_grab_regsfpdiab(true);
ppc_effective_address = (reg_a == 0) ? ppc_result_b : ppc_result_a + ppc_result_b;
ppc_result64_d = mem_grab_dword(ppc_effective_address);
ppc_store_dfpresult(true);
}
-void ppc_lfsux() {
+void dppc_interpreter::ppc_lfsux() {
ppc_grab_regsfpdiab(true);
if (reg_a == 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -799,7 +799,7 @@ void ppc_lfsux() {
}
}
-void ppc_lfd() {
+void dppc_interpreter::ppc_lfd() {
ppc_grab_regsfpdia(true);
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -807,7 +807,7 @@ void ppc_lfd() {
ppc_store_dfpresult(true);
}
-void ppc_lfdu() {
+void dppc_interpreter::ppc_lfdu() {
ppc_grab_regsfpdia(true);
if (reg_a == 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -821,14 +821,14 @@ void ppc_lfdu() {
}
}
-void ppc_lfdx() {
+void dppc_interpreter::ppc_lfdx() {
ppc_grab_regsfpdia(true);
ppc_effective_address += (reg_a > 0) ? ppc_result_a + ppc_result_b : ppc_result_b;
ppc_result64_d = mem_grab_qword(ppc_effective_address);
ppc_store_dfpresult(true);
}
-void ppc_lfdux() {
+void dppc_interpreter::ppc_lfdux() {
ppc_grab_regsfpdiab(true);
if (reg_a == 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -841,14 +841,14 @@ void ppc_lfdux() {
}
}
-void ppc_stfs() {
+void dppc_interpreter::ppc_stfs() {
ppc_grab_regsfpsia(true);
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
mem_write_dword(ppc_effective_address, uint32_t(ppc_state.fpr[reg_s].int64_r));
}
-void ppc_stfsu() {
+void dppc_interpreter::ppc_stfsu() {
ppc_grab_regsfpsia(true);
if (reg_a == 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -861,13 +861,13 @@ void ppc_stfsu() {
}
}
-void ppc_stfsx() {
+void dppc_interpreter::ppc_stfsx() {
ppc_grab_regsfpsiab(true);
ppc_effective_address = (reg_a == 0) ? ppc_result_b : ppc_result_a + ppc_result_b;
mem_write_dword(ppc_effective_address, uint32_t(ppc_state.fpr[reg_s].int64_r));
}
-void ppc_stfsux() {
+void dppc_interpreter::ppc_stfsux() {
ppc_grab_regsfpsiab(true);
if (reg_a == 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -879,14 +879,14 @@ void ppc_stfsux() {
}
}
-void ppc_stfd() {
+void dppc_interpreter::ppc_stfd() {
ppc_grab_regsfpsia(true);
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
mem_write_qword(ppc_effective_address, ppc_state.fpr[reg_s].int64_r);
}
-void ppc_stfdu() {
+void dppc_interpreter::ppc_stfdu() {
ppc_grab_regsfpsia(true);
if (reg_a == 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -899,13 +899,13 @@ void ppc_stfdu() {
}
}
-void ppc_stfdx() {
+void dppc_interpreter::ppc_stfdx() {
ppc_grab_regsfpsiab(true);
ppc_effective_address = (reg_a == 0) ? ppc_result_b : ppc_result_a + ppc_result_b;
mem_write_qword(ppc_effective_address, ppc_state.fpr[reg_s].int64_r);
}
-void ppc_stfdux() {
+void dppc_interpreter::ppc_stfdux() {
ppc_grab_regsfpsiab(true);
if (reg_a == 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -917,7 +917,7 @@ void ppc_stfdux() {
}
}
-void ppc_stfiwx() {
+void dppc_interpreter::ppc_stfiwx() {
ppc_grab_regsfpsiab(true);
ppc_effective_address = (reg_a == 0) ? ppc_result_b : ppc_result_a + ppc_result_b;
mem_write_dword(ppc_effective_address, (uint32_t)(ppc_state.fpr[reg_s].int64_r));
@@ -925,14 +925,14 @@ void ppc_stfiwx() {
// Floating Point Register Transfer
-void ppc_fmr() {
+void dppc_interpreter::ppc_fmr() {
ppc_grab_regsfpdb(true);
ppc_state.fpr[reg_d] = ppc_state.fpr[reg_b];
ppc_store_dfpresult(true);
}
-void ppc_mffs() {
+void dppc_interpreter::ppc_mffs() {
ppc_grab_regsda();
uint64_t fpstore1 = ppc_state.fpr[reg_d].int64_r & 0xFFFFFFFF00000000;
uint64_t fpstore2 = ppc_state.fpscr & 0x00000000FFFFFFFF;
@@ -940,7 +940,7 @@ void ppc_mffs() {
fp_save_uint64(fpstore1);
}
-void ppc_mffsdot() {
+void dppc_interpreter::ppc_mffsdot() {
ppc_grab_regsda();
uint64_t fpstore1 = ppc_state.fpr[reg_d].int64_r & 0xFFFFFFFF00000000;
uint64_t fpstore2 = ppc_state.fpscr & 0x00000000FFFFFFFF;
@@ -949,7 +949,7 @@ void ppc_mffsdot() {
ppc_fp_changecrf1();
}
-void ppc_mtfsf() {
+void dppc_interpreter::ppc_mtfsf() {
reg_b = (ppc_cur_instruction >> 11) & 31;
uint32_t fm_mask = (ppc_cur_instruction >> 17) & 255;
crm += ((fm_mask & 1) == 1) ? 0xF0000000 : 0x00000000;
@@ -964,7 +964,7 @@ void ppc_mtfsf() {
ppc_state.fpscr = (quickfprval & crm) | (quickfprval & ~(crm));
}
-void ppc_mtfsfdot() {
+void dppc_interpreter::ppc_mtfsfdot() {
reg_b = (ppc_cur_instruction >> 11) & 31;
uint32_t fm_mask = (ppc_cur_instruction >> 17) & 255;
crm += ((fm_mask & 1) == 1) ? 0xF0000000 : 0x00000000;
@@ -980,7 +980,7 @@ void ppc_mtfsfdot() {
ppc_fp_changecrf1();
}
-void ppc_mtfsfi() {
+void dppc_interpreter::ppc_mtfsfi() {
ppc_result_b = (ppc_cur_instruction >> 11) & 15;
crf_d = (ppc_cur_instruction >> 23) & 7;
crf_d = crf_d << 2;
@@ -988,7 +988,7 @@ void ppc_mtfsfi() {
((ppc_state.spr[SPR::XER] & 0xF0000000UL) >> crf_d);
}
-void ppc_mtfsfidot() {
+void dppc_interpreter::ppc_mtfsfidot() {
ppc_result_b = (ppc_cur_instruction >> 11) & 15;
crf_d = (ppc_cur_instruction >> 23) & 7;
crf_d = crf_d << 2;
@@ -997,14 +997,14 @@ void ppc_mtfsfidot() {
ppc_fp_changecrf1();
}
-void ppc_mtfsb0() {
+void dppc_interpreter::ppc_mtfsb0() {
crf_d = (ppc_cur_instruction >> 21) & 0x31;
if ((crf_d == 0) || (crf_d > 2)) {
ppc_state.fpscr &= ~(1 << (31 - crf_d));
}
}
-void ppc_mtfsb0dot() {
+void dppc_interpreter::ppc_mtfsb0dot() {
crf_d = (ppc_cur_instruction >> 21) & 0x31;
if ((crf_d == 0) || (crf_d > 2)) {
ppc_state.fpscr &= ~(1 << crf_d);
@@ -1012,14 +1012,14 @@ void ppc_mtfsb0dot() {
ppc_fp_changecrf1();
}
-void ppc_mtfsb1() {
+void dppc_interpreter::ppc_mtfsb1() {
crf_d = (ppc_cur_instruction >> 21) & 0x31;
if ((crf_d == 0) || (crf_d > 2)) {
ppc_state.fpscr |= (1 << crf_d);
}
}
-void ppc_mtfsb1dot() {
+void dppc_interpreter::ppc_mtfsb1dot() {
crf_d = ~(ppc_cur_instruction >> 21) & 0x31;
if ((crf_d == 0) || (crf_d > 2)) {
ppc_state.fpscr |= (1 << crf_d);
@@ -1027,7 +1027,7 @@ void ppc_mtfsb1dot() {
ppc_fp_changecrf1();
}
-void ppc_mcrfs() {
+void dppc_interpreter::ppc_mcrfs() {
crf_d = (ppc_cur_instruction >> 23) & 7;
crf_d = crf_d << 2;
crf_s = (ppc_cur_instruction >> 18) & 7;
@@ -1038,7 +1038,7 @@ void ppc_mcrfs() {
// Floating Point Comparisons
-void ppc_fcmpo() {
+void dppc_interpreter::ppc_fcmpo() {
ppc_grab_regsfpsab(true);
crf_d = (ppc_cur_instruction >> 23) & 7;
@@ -1072,7 +1072,7 @@ void ppc_fcmpo() {
}
}
-void ppc_fcmpu() {
+void dppc_interpreter::ppc_fcmpu() {
ppc_grab_regsfpsab(true);
crf_d = (ppc_cur_instruction >> 23) & 7;
diff --git a/cpu/ppc/ppcgekkoopcodes.cpp b/cpu/ppc/ppcgekkoopcodes.cpp
deleted file mode 100644
index a5d9e1e..0000000
--- a/cpu/ppc/ppcgekkoopcodes.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-DingusPPC - The Experimental PowerPC Macintosh emulator
-Copyright (C) 2018-20 divingkatae and maximum
- (theweirdo) spatium
-
-(Contact divingkatae#1017 or powermax#2286 on Discord for more info)
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-// The uniquely Gekko opcodes for the processor - ppcgekkoopcodes.cpp
-
-#include "ppcemu.h"
-#include
-#include
-
-void ppc_psq_l() {
- printf("Hello. There's no GameCube emulation...yet. Goodbye.");
- exit(0);
-}
-
-void ppc_psq_lu() {
- printf("Hello. There's no GameCube emulation...yet. Goodbye.");
- exit(0);
-}
-
-void ppc_psq_st() {
- printf("Hello. There's no GameCube emulation...yet. Goodbye.");
- exit(0);
-}
-
-void ppc_psq_stu() {
- printf("Hello. There's no GameCube emulation...yet. Goodbye.");
- exit(0);
-}
diff --git a/cpu/ppc/ppcopcodes.cpp b/cpu/ppc/ppcopcodes.cpp
index cd3bab1..e1cf3b4 100644
--- a/cpu/ppc/ppcopcodes.cpp
+++ b/cpu/ppc/ppcopcodes.cpp
@@ -197,20 +197,20 @@ comparisons needed. This means loads of functions, but less CPU cycles needed to
function (theoretically).
**/
-void ppc_addi() {
+void dppc_interpreter::ppc_addi() {
ppc_grab_regsdasimm();
ppc_result_d = (reg_a == 0) ? simm : (ppc_result_a + simm);
ppc_store_result_regd();
}
-void ppc_addic() {
+void dppc_interpreter::ppc_addic() {
ppc_grab_regsdasimm();
ppc_result_d = (ppc_result_a + simm);
ppc_carry(ppc_result_a, ppc_result_d);
ppc_store_result_regd();
}
-void ppc_addicdot() {
+void dppc_interpreter::ppc_addicdot() {
ppc_grab_regsdasimm();
ppc_result_d = (ppc_result_a + simm);
ppc_changecrf0(ppc_result_d);
@@ -218,13 +218,13 @@ void ppc_addicdot() {
ppc_store_result_regd();
}
-void ppc_addis() {
+void dppc_interpreter::ppc_addis() {
ppc_grab_regsdasimm();
ppc_result_d = (reg_a == 0) ? (simm << 16) : (ppc_result_a + (simm << 16));
ppc_store_result_regd();
}
-void ppc_add() {
+void dppc_interpreter::ppc_add() {
ppc_grab_regsdab();
ppc_result_d = ppc_result_a + ppc_result_b;
if (oe_flag)
@@ -234,7 +234,7 @@ void ppc_add() {
ppc_store_result_regd();
}
-void ppc_addc() {
+void dppc_interpreter::ppc_addc() {
ppc_grab_regsdab();
ppc_result_d = ppc_result_a + ppc_result_b;
ppc_carry(ppc_result_a, ppc_result_d);
@@ -247,7 +247,7 @@ void ppc_addc() {
ppc_store_result_regd();
}
-void ppc_adde() {
+void dppc_interpreter::ppc_adde() {
ppc_grab_regsdab();
uint32_t xer_ca = !!(ppc_state.spr[SPR::XER] & 0x20000000);
ppc_result_d = ppc_result_a + ppc_result_b + xer_ca;
@@ -266,7 +266,7 @@ void ppc_adde() {
ppc_store_result_regd();
}
-void ppc_addme() {
+void dppc_interpreter::ppc_addme() {
ppc_grab_regsda();
uint32_t xer_ca = !!(ppc_state.spr[SPR::XER] & 0x20000000);
ppc_result_d = ppc_result_a + xer_ca - 1;
@@ -285,7 +285,7 @@ void ppc_addme() {
ppc_store_result_regd();
}
-void ppc_addze() {
+void dppc_interpreter::ppc_addze() {
ppc_grab_regsda();
uint32_t grab_xer = !!(ppc_state.spr[SPR::XER] & 0x20000000);
ppc_result_d = ppc_result_a + grab_xer;
@@ -304,7 +304,7 @@ void ppc_addze() {
ppc_store_result_regd();
}
-void ppc_subf() {
+void dppc_interpreter::ppc_subf() {
ppc_grab_regsdab();
ppc_result_d = ppc_result_b - ppc_result_a;
@@ -316,7 +316,7 @@ void ppc_subf() {
ppc_store_result_regd();
}
-void ppc_subfc() {
+void dppc_interpreter::ppc_subfc() {
ppc_grab_regsdab();
ppc_result_d = ppc_result_b - ppc_result_a;
ppc_carry_sub(ppc_result_a, ppc_result_b);
@@ -329,14 +329,14 @@ void ppc_subfc() {
ppc_store_result_regd();
}
-void ppc_subfic() {
+void dppc_interpreter::ppc_subfic() {
ppc_grab_regsdasimm();
ppc_result_d = simm - ppc_result_a;
ppc_carry(~ppc_result_a, ppc_result_d);
ppc_store_result_regd();
}
-void ppc_subfe() {
+void dppc_interpreter::ppc_subfe() {
ppc_grab_regsdab();
uint32_t grab_xer = !!(ppc_state.spr[SPR::XER] & 0x20000000);
ppc_result_d = ~ppc_result_a + ppc_result_b + grab_xer;
@@ -350,7 +350,7 @@ void ppc_subfe() {
ppc_store_result_regd();
}
-void ppc_subfme() {
+void dppc_interpreter::ppc_subfme() {
ppc_grab_regsda();
uint32_t grab_xer = !!(ppc_state.spr[SPR::XER] & 0x20000000);
ppc_result_d = ~ppc_result_a + grab_xer - 1;
@@ -364,7 +364,7 @@ void ppc_subfme() {
ppc_store_result_regd();
}
-void ppc_subfze() {
+void dppc_interpreter::ppc_subfze() {
ppc_grab_regsda();
ppc_result_d = ~ppc_result_a + (ppc_state.spr[SPR::XER] & 0x20000000);
ppc_carry(~ppc_result_a, ppc_result_d);
@@ -378,7 +378,7 @@ void ppc_subfze() {
}
-void ppc_and() {
+void dppc_interpreter::ppc_and() {
ppc_grab_regssab();
ppc_result_a = ppc_result_d & ppc_result_b;
@@ -388,7 +388,7 @@ void ppc_and() {
ppc_store_result_rega();
}
-void ppc_andc() {
+void dppc_interpreter::ppc_andc() {
ppc_grab_regssab();
ppc_result_a = ppc_result_d & ~(ppc_result_b);
@@ -398,21 +398,21 @@ void ppc_andc() {
ppc_store_result_rega();
}
-void ppc_andidot() {
+void dppc_interpreter::ppc_andidot() {
ppc_grab_regssauimm();
ppc_result_a = ppc_result_d & uimm;
ppc_changecrf0(ppc_result_a);
ppc_store_result_rega();
}
-void ppc_andisdot() {
+void dppc_interpreter::ppc_andisdot() {
ppc_grab_regssauimm();
ppc_result_a = ppc_result_d & (uimm << 16);
ppc_changecrf0(ppc_result_a);
ppc_store_result_rega();
}
-void ppc_nand() {
+void dppc_interpreter::ppc_nand() {
ppc_grab_regssab();
ppc_result_a = ~(ppc_result_d & ppc_result_b);
@@ -422,7 +422,7 @@ void ppc_nand() {
ppc_store_result_rega();
}
-void ppc_or() {
+void dppc_interpreter::ppc_or() {
ppc_grab_regssab();
ppc_result_a = ppc_result_d | ppc_result_b;
@@ -432,7 +432,7 @@ void ppc_or() {
ppc_store_result_rega();
}
-void ppc_orc() {
+void dppc_interpreter::ppc_orc() {
ppc_grab_regssab();
ppc_result_a = ppc_result_d | ~(ppc_result_b);
@@ -442,19 +442,19 @@ void ppc_orc() {
ppc_store_result_rega();
}
-void ppc_ori() {
+void dppc_interpreter::ppc_ori() {
ppc_grab_regssauimm();
ppc_result_a = ppc_result_d | uimm;
ppc_store_result_rega();
}
-void ppc_oris() {
+void dppc_interpreter::ppc_oris() {
ppc_grab_regssauimm();
ppc_result_a = (uimm << 16) | ppc_result_d;
ppc_store_result_rega();
}
-void ppc_eqv() {
+void dppc_interpreter::ppc_eqv() {
ppc_grab_regssab();
ppc_result_a = ~(ppc_result_d ^ ppc_result_b);
@@ -464,7 +464,7 @@ void ppc_eqv() {
ppc_store_result_rega();
}
-void ppc_nor() {
+void dppc_interpreter::ppc_nor() {
ppc_grab_regssab();
ppc_result_a = ~(ppc_result_d | ppc_result_b);
@@ -474,7 +474,7 @@ void ppc_nor() {
ppc_store_result_rega();
}
-void ppc_xor() {
+void dppc_interpreter::ppc_xor() {
ppc_grab_regssab();
ppc_result_a = ppc_result_d ^ ppc_result_b;
@@ -484,19 +484,19 @@ void ppc_xor() {
ppc_store_result_rega();
}
-void ppc_xori() {
+void dppc_interpreter::ppc_xori() {
ppc_grab_regssauimm();
ppc_result_a = ppc_result_d ^ uimm;
ppc_store_result_rega();
}
-void ppc_xoris() {
+void dppc_interpreter::ppc_xoris() {
ppc_grab_regssauimm();
ppc_result_a = ppc_result_d ^ (uimm << 16);
ppc_store_result_rega();
}
-void ppc_neg() {
+void dppc_interpreter::ppc_neg() {
ppc_grab_regsda();
ppc_result_d = ~(ppc_result_a) + 1;
@@ -513,7 +513,7 @@ void ppc_neg() {
ppc_store_result_regd();
}
-void ppc_cntlzw() {
+void dppc_interpreter::ppc_cntlzw() {
ppc_grab_regssa();
uint32_t lead = 0;
@@ -538,7 +538,7 @@ void ppc_cntlzw() {
ppc_store_result_rega();
}
-void ppc_mulhwu() {
+void dppc_interpreter::ppc_mulhwu() {
ppc_grab_regsdab();
uint64_t product = (uint64_t)ppc_result_a * (uint64_t)ppc_result_b;
ppc_result_d = (uint32_t)(product >> 32);
@@ -549,7 +549,7 @@ void ppc_mulhwu() {
ppc_store_result_regd();
}
-void ppc_mulhw() {
+void dppc_interpreter::ppc_mulhw() {
ppc_grab_regsdab();
int64_t product = (int64_t)(int32_t)ppc_result_a * (int64_t)(int32_t)ppc_result_b;
ppc_result_d = product >> 32;
@@ -560,7 +560,7 @@ void ppc_mulhw() {
ppc_store_result_regd();
}
-void ppc_mullw() {
+void dppc_interpreter::ppc_mullw() {
ppc_grab_regsdab();
int64_t product = (int64_t)(int32_t)ppc_result_a * (int64_t)(int32_t)ppc_result_b;
@@ -580,14 +580,14 @@ void ppc_mullw() {
ppc_store_result_regd();
}
-void ppc_mulli() {
+void dppc_interpreter::ppc_mulli() {
ppc_grab_regsdasimm();
int64_t product = (int64_t)(int32_t)ppc_result_a * (int64_t)(int32_t)simm;
ppc_result_d = (uint32_t)product;
ppc_store_result_regd();
}
-void ppc_divw() {
+void dppc_interpreter::ppc_divw() {
ppc_grab_regsdab();
if (!ppc_result_b) { /* handle the "anything / 0" case */
@@ -616,7 +616,7 @@ void ppc_divw() {
ppc_store_result_regd();
}
-void ppc_divwu() {
+void dppc_interpreter::ppc_divwu() {
ppc_grab_regsdab();
if (!ppc_result_b) { /* division by zero */
@@ -642,7 +642,7 @@ void ppc_divwu() {
// Value shifting
-void ppc_slw() {
+void dppc_interpreter::ppc_slw() {
ppc_grab_regssab();
if (ppc_result_b & 0x20) {
ppc_result_a = 0;
@@ -656,7 +656,7 @@ void ppc_slw() {
ppc_store_result_rega();
}
-void ppc_srw() {
+void dppc_interpreter::ppc_srw() {
ppc_grab_regssab();
if (ppc_result_b & 0x20) {
ppc_result_a = 0;
@@ -670,7 +670,7 @@ void ppc_srw() {
ppc_store_result_rega();
}
-void ppc_sraw() {
+void dppc_interpreter::ppc_sraw() {
ppc_grab_regssab();
if (ppc_result_b & 0x20) {
ppc_result_a = (int32_t)ppc_result_d >> 31;
@@ -692,7 +692,7 @@ void ppc_sraw() {
ppc_store_result_rega();
}
-void ppc_srawi() {
+void dppc_interpreter::ppc_srawi() {
ppc_grab_regssa();
unsigned shift = (ppc_cur_instruction >> 11) & 0x1F;
uint32_t mask = (1 << shift) - 1;
@@ -716,7 +716,7 @@ static inline uint32_t rot_mask(unsigned rot_mb, unsigned rot_me) {
return ((rot_mb <= rot_me) ? m2 & m1 : m1 | m2);
}
-void ppc_rlwimi() {
+void dppc_interpreter::ppc_rlwimi() {
ppc_grab_regssa();
unsigned rot_sh = (ppc_cur_instruction >> 11) & 31;
unsigned rot_mb = (ppc_cur_instruction >> 6) & 31;
@@ -730,7 +730,7 @@ void ppc_rlwimi() {
ppc_store_result_rega();
}
-void ppc_rlwinm() {
+void dppc_interpreter::ppc_rlwinm() {
ppc_grab_regssa();
unsigned rot_sh = (ppc_cur_instruction >> 11) & 31;
unsigned rot_mb = (ppc_cur_instruction >> 6) & 31;
@@ -744,7 +744,7 @@ void ppc_rlwinm() {
ppc_store_result_rega();
}
-void ppc_rlwnm() {
+void dppc_interpreter::ppc_rlwnm() {
ppc_grab_regssab();
unsigned rot_mb = (ppc_cur_instruction >> 6) & 31;
unsigned rot_me = (ppc_cur_instruction >> 1) & 31;
@@ -757,12 +757,12 @@ void ppc_rlwnm() {
ppc_store_result_rega();
}
-void ppc_mfcr() {
+void dppc_interpreter::ppc_mfcr() {
reg_d = (ppc_cur_instruction >> 21) & 31;
ppc_state.gpr[reg_d] = ppc_state.cr;
}
-void ppc_mtsr() {
+void dppc_interpreter::ppc_mtsr() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -773,7 +773,7 @@ void ppc_mtsr() {
}
}
-void ppc_mtsrin() {
+void dppc_interpreter::ppc_mtsrin() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -784,7 +784,7 @@ void ppc_mtsrin() {
}
}
-void ppc_mfsr() {
+void dppc_interpreter::ppc_mfsr() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -795,7 +795,7 @@ void ppc_mfsr() {
}
}
-void ppc_mfsrin() {
+void dppc_interpreter::ppc_mfsrin() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -806,7 +806,7 @@ void ppc_mfsrin() {
}
}
-void ppc_mfmsr() {
+void dppc_interpreter::ppc_mfmsr() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -817,7 +817,7 @@ void ppc_mfmsr() {
ppc_state.gpr[reg_d] = ppc_state.msr;
}
-void ppc_mtmsr() {
+void dppc_interpreter::ppc_mtmsr() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -828,7 +828,7 @@ void ppc_mtmsr() {
ppc_state.msr = ppc_state.gpr[reg_s];
}
-void ppc_mfspr() {
+void dppc_interpreter::ppc_mfspr() {
uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 31) << 5) | ((ppc_cur_instruction >> 16) & 31);
#ifdef PROFILER
@@ -840,7 +840,7 @@ void ppc_mfspr() {
ppc_state.gpr[reg_d] = ppc_state.spr[ref_spr];
}
-void ppc_mtspr() {
+void dppc_interpreter::ppc_mtspr() {
uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 31) << 5) | ((ppc_cur_instruction >> 16) & 31);
reg_s = (ppc_cur_instruction >> 21) & 31;
@@ -885,7 +885,7 @@ void ppc_mtspr() {
}
}
-void ppc_mftb() {
+void dppc_interpreter::ppc_mftb() {
uint32_t ref_spr = (((ppc_cur_instruction >> 11) & 31) << 5) | ((ppc_cur_instruction >> 16) & 31);
reg_d = (ppc_cur_instruction >> 21) & 31;
switch (ref_spr) {
@@ -900,7 +900,7 @@ void ppc_mftb() {
}
}
-void ppc_mtcrf() {
+void dppc_interpreter::ppc_mtcrf() {
uint32_t cr_mask = 0;
ppc_grab_regssa();
crm = ((ppc_cur_instruction >> 12) & 255);
@@ -916,7 +916,7 @@ void ppc_mtcrf() {
ppc_state.cr = (ppc_result_d & cr_mask) | (ppc_state.cr & ~(cr_mask));
}
-void ppc_mcrxr() {
+void dppc_interpreter::ppc_mcrxr() {
crf_d = (ppc_cur_instruction >> 23) & 7;
crf_d = crf_d << 2;
ppc_state.cr = (ppc_state.cr & ~(0xF0000000UL >> crf_d)) |
@@ -924,7 +924,7 @@ void ppc_mcrxr() {
ppc_state.spr[SPR::XER] &= 0x0FFFFFFF;
}
-void ppc_extsb() {
+void dppc_interpreter::ppc_extsb() {
ppc_grab_regssa();
ppc_result_d = ppc_result_d & 0xFF;
ppc_result_a = (ppc_result_d < 0x80) ? (ppc_result_d & 0x000000FF)
@@ -936,7 +936,7 @@ void ppc_extsb() {
ppc_store_result_rega();
}
-void ppc_extsh() {
+void dppc_interpreter::ppc_extsh() {
ppc_grab_regssa();
ppc_result_d = ppc_result_d & 0xFFFF;
ppc_result_a = (ppc_result_d < 0x8000) ? (ppc_result_d & 0x0000FFFF)
@@ -953,14 +953,14 @@ void ppc_extsh() {
// The middle 24 bytes are the 24-bit address to use for branching to.
-void ppc_b() {
+void dppc_interpreter::ppc_b() {
uint32_t quick_test = (ppc_cur_instruction & 0x03FFFFFC);
adr_li = (quick_test < 0x2000000) ? quick_test : (0xFC000000UL + quick_test);
ppc_next_instruction_address = (uint32_t)(ppc_state.pc + adr_li);
bb_kind = BB_end_kind::BB_BRANCH;
}
-void ppc_bl() {
+void dppc_interpreter::ppc_bl() {
uint32_t quick_test = (ppc_cur_instruction & 0x03FFFFFC);
adr_li = (quick_test < 0x2000000) ? quick_test : (0xFC000000UL + quick_test);
ppc_next_instruction_address = (uint32_t)(ppc_state.pc + adr_li);
@@ -968,14 +968,14 @@ void ppc_bl() {
bb_kind = BB_end_kind::BB_BRANCH;
}
-void ppc_ba() {
+void dppc_interpreter::ppc_ba() {
uint32_t quick_test = (ppc_cur_instruction & 0x03FFFFFC);
adr_li = (quick_test < 0x2000000) ? quick_test : (0xFC000000UL + quick_test);
ppc_next_instruction_address = adr_li;
bb_kind = BB_end_kind::BB_BRANCH;
}
-void ppc_bla() {
+void dppc_interpreter::ppc_bla() {
uint32_t quick_test = (ppc_cur_instruction & 0x03FFFFFC);
adr_li = (quick_test < 0x2000000) ? quick_test : (0xFC000000UL + quick_test);
ppc_next_instruction_address = adr_li;
@@ -983,7 +983,7 @@ void ppc_bla() {
bb_kind = BB_end_kind::BB_BRANCH;
}
-void ppc_bc() {
+void dppc_interpreter::ppc_bc() {
uint32_t ctr_ok;
uint32_t cnd_ok;
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
@@ -1002,7 +1002,7 @@ void ppc_bc() {
}
}
-void ppc_bca() {
+void dppc_interpreter::ppc_bca() {
uint32_t ctr_ok;
uint32_t cnd_ok;
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
@@ -1021,7 +1021,7 @@ void ppc_bca() {
}
}
-void ppc_bcl() {
+void dppc_interpreter::ppc_bcl() {
uint32_t ctr_ok;
uint32_t cnd_ok;
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
@@ -1041,7 +1041,7 @@ void ppc_bcl() {
ppc_state.spr[SPR::LR] = ppc_state.pc + 4;
}
-void ppc_bcla() {
+void dppc_interpreter::ppc_bcla() {
uint32_t ctr_ok;
uint32_t cnd_ok;
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
@@ -1061,7 +1061,7 @@ void ppc_bcla() {
ppc_state.spr[SPR::LR] = ppc_state.pc + 4;
}
-void ppc_bcctr() {
+void dppc_interpreter::ppc_bcctr() {
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
uint32_t br_bi = (ppc_cur_instruction >> 16) & 31;
@@ -1074,7 +1074,7 @@ void ppc_bcctr() {
}
}
-void ppc_bcctrl() {
+void dppc_interpreter::ppc_bcctrl() {
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
uint32_t br_bi = (ppc_cur_instruction >> 16) & 31;
@@ -1088,7 +1088,7 @@ void ppc_bcctrl() {
ppc_state.spr[SPR::LR] = ppc_state.pc + 4;
}
-void ppc_bclr() {
+void dppc_interpreter::ppc_bclr() {
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
uint32_t br_bi = (ppc_cur_instruction >> 16) & 31;
uint32_t ctr_ok;
@@ -1106,7 +1106,7 @@ void ppc_bclr() {
}
}
-void ppc_bclrl() {
+void dppc_interpreter::ppc_bclrl() {
uint32_t br_bo = (ppc_cur_instruction >> 21) & 31;
uint32_t br_bi = (ppc_cur_instruction >> 16) & 31;
uint32_t ctr_ok;
@@ -1126,7 +1126,7 @@ void ppc_bclrl() {
}
// Compare Instructions
-void ppc_cmp() {
+void dppc_interpreter::ppc_cmp() {
#ifdef CHECK_INVALID
if (ppc_cur_instruction & 0x200000) {
LOG_F(WARNING, "Invalid CMP instruction form (L=1)!\n");
@@ -1144,7 +1144,7 @@ void ppc_cmp() {
ppc_state.cr = ((ppc_state.cr & ~(0xf0000000UL >> crf_d)) | ((cmp_c + xercon) >> crf_d));
}
-void ppc_cmpi() {
+void dppc_interpreter::ppc_cmpi() {
#ifdef CHECK_INVALID
if (ppc_cur_instruction & 0x200000) {
LOG_F(WARNING, "Invalid CMPI instruction form (L=1)!\n");
@@ -1162,7 +1162,7 @@ void ppc_cmpi() {
ppc_state.cr = ((ppc_state.cr & ~(0xf0000000UL >> crf_d)) | ((cmp_c + xercon) >> crf_d));
}
-void ppc_cmpl() {
+void dppc_interpreter::ppc_cmpl() {
#ifdef CHECK_INVALID
if (ppc_cur_instruction & 0x200000) {
LOG_F(WARNING, "Invalid CMPL instruction form (L=1)!\n");
@@ -1180,7 +1180,7 @@ void ppc_cmpl() {
ppc_state.cr = ((ppc_state.cr & ~(0xf0000000UL >> crf_d)) | ((cmp_c + xercon) >> crf_d));
}
-void ppc_cmpli() {
+void dppc_interpreter::ppc_cmpli() {
#ifdef CHECK_INVALID
if (ppc_cur_instruction & 0x200000) {
LOG_F(WARNING, "Invalid CMPLI instruction form (L=1)!\n");
@@ -1199,7 +1199,7 @@ void ppc_cmpli() {
// Condition Register Changes
-void ppc_crand() {
+void dppc_interpreter::ppc_crand() {
ppc_grab_regsdab();
if ((ppc_state.cr & (0x80000000UL >> reg_a)) && (ppc_state.cr & (0x80000000UL >> reg_b))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1207,7 +1207,7 @@ void ppc_crand() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_crandc() {
+void dppc_interpreter::ppc_crandc() {
ppc_grab_regsdab();
if ((ppc_state.cr & (0x80000000UL >> reg_a)) && !(ppc_state.cr & (0x80000000UL >> reg_b))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1215,7 +1215,7 @@ void ppc_crandc() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_creqv() {
+void dppc_interpreter::ppc_creqv() {
ppc_grab_regsdab();
if (!((ppc_state.cr & (0x80000000UL >> reg_a)) ^ (ppc_state.cr & (0x80000000UL >> reg_b)))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1223,7 +1223,7 @@ void ppc_creqv() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_crnand() {
+void dppc_interpreter::ppc_crnand() {
ppc_grab_regsdab();
if (!((ppc_state.cr & (0x80000000UL >> reg_a)) && (ppc_state.cr & (0x80000000UL >> reg_b)))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1231,7 +1231,7 @@ void ppc_crnand() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_crnor() {
+void dppc_interpreter::ppc_crnor() {
ppc_grab_regsdab();
if (!((ppc_state.cr & (0x80000000UL >> reg_a)) || (ppc_state.cr & (0x80000000UL >> reg_b)))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1240,7 +1240,7 @@ void ppc_crnor() {
}
}
-void ppc_cror() {
+void dppc_interpreter::ppc_cror() {
ppc_grab_regsdab();
if ((ppc_state.cr & (0x80000000UL >> reg_a)) || (ppc_state.cr & (0x80000000UL >> reg_b))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1248,7 +1248,7 @@ void ppc_cror() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_crorc() {
+void dppc_interpreter::ppc_crorc() {
ppc_grab_regsdab();
if ((ppc_state.cr & (0x80000000UL >> reg_a)) || !(ppc_state.cr & (0x80000000UL >> reg_b))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1256,7 +1256,7 @@ void ppc_crorc() {
ppc_state.cr &= ~(0x80000000UL >> reg_d);
}
}
-void ppc_crxor() {
+void dppc_interpreter::ppc_crxor() {
ppc_grab_regsdab();
if ((ppc_state.cr & (0x80000000UL >> reg_a)) ^ (ppc_state.cr & (0x80000000UL >> reg_b))) {
ppc_state.cr |= (0x80000000UL >> reg_d);
@@ -1267,7 +1267,7 @@ void ppc_crxor() {
// Processor MGMT Fns.
-void ppc_rfi() {
+void dppc_interpreter::ppc_rfi() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
@@ -1280,11 +1280,11 @@ void ppc_rfi() {
bb_kind = BB_end_kind::BB_RFI;
}
-void ppc_sc() {
+void dppc_interpreter::ppc_sc() {
ppc_exception_handler(Except_Type::EXC_SYSCALL, 0x20000);
}
-void ppc_tw() {
+void dppc_interpreter::ppc_tw() {
reg_a = (ppc_cur_instruction >> 11) & 31;
reg_b = (ppc_cur_instruction >> 16) & 31;
ppc_to = (ppc_cur_instruction >> 21) & 31;
@@ -1297,7 +1297,7 @@ void ppc_tw() {
}
}
-void ppc_twi() {
+void dppc_interpreter::ppc_twi() {
simm = (int32_t)((int16_t)((ppc_cur_instruction)&0xFFFF));
reg_a = (ppc_cur_instruction >> 16) & 0x1F;
ppc_to = (ppc_cur_instruction >> 21) & 0x1F;
@@ -1310,48 +1310,48 @@ void ppc_twi() {
}
}
-void ppc_eieio() {
+void dppc_interpreter::ppc_eieio() {
/* placeholder */
}
-void ppc_isync() {
+void dppc_interpreter::ppc_isync() {
/* placeholder */
}
-void ppc_sync() {
+void dppc_interpreter::ppc_sync() {
/* placeholder */
}
-void ppc_icbi() {
+void dppc_interpreter::ppc_icbi() {
/* placeholder */
}
-void ppc_dcbf() {
+void dppc_interpreter::ppc_dcbf() {
/* placeholder */
}
-void ppc_dcbi() {
+void dppc_interpreter::ppc_dcbi() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
/* placeholder */
}
-void ppc_dcbst() {
+void dppc_interpreter::ppc_dcbst() {
/* placeholder */
}
-void ppc_dcbt() {
+void dppc_interpreter::ppc_dcbt() {
// Not needed, the HDI reg is touched to no-op this instruction.
return;
}
-void ppc_dcbtst() {
+void dppc_interpreter::ppc_dcbtst() {
// Not needed, the HDI reg is touched to no-op this instruction.
return;
}
-void ppc_dcbz() {
+void dppc_interpreter::ppc_dcbz() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
if (!(ppc_state.pc & 32) && (ppc_state.pc < 0xFFFFFFE0UL)) {
@@ -1369,20 +1369,20 @@ void ppc_dcbz() {
// Integer Load and Store Functions
-void ppc_stb() {
+void dppc_interpreter::ppc_stb() {
ppc_grab_regssa();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
mem_write_byte(ppc_effective_address, ppc_result_d);
}
-void ppc_stbx() {
+void dppc_interpreter::ppc_stbx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
mem_write_byte(ppc_effective_address, ppc_result_d);
}
-void ppc_stbu() {
+void dppc_interpreter::ppc_stbu() {
ppc_grab_regssa();
if (reg_a != 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -1394,7 +1394,7 @@ void ppc_stbu() {
}
}
-void ppc_stbux() {
+void dppc_interpreter::ppc_stbux() {
ppc_grab_regssab();
if (reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1405,14 +1405,14 @@ void ppc_stbux() {
}
}
-void ppc_sth() {
+void dppc_interpreter::ppc_sth() {
ppc_grab_regssa();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
mem_write_word(ppc_effective_address, ppc_result_d);
}
-void ppc_sthu() {
+void dppc_interpreter::ppc_sthu() {
ppc_grab_regssa();
if (reg_a != 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -1424,7 +1424,7 @@ void ppc_sthu() {
}
}
-void ppc_sthux() {
+void dppc_interpreter::ppc_sthux() {
ppc_grab_regssab();
if (reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1435,32 +1435,32 @@ void ppc_sthux() {
}
}
-void ppc_sthx() {
+void dppc_interpreter::ppc_sthx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
mem_write_word(ppc_effective_address, ppc_result_d);
}
-void ppc_sthbrx() {
+void dppc_interpreter::ppc_sthbrx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = (uint32_t)(BYTESWAP_16((uint16_t)ppc_result_d));
mem_write_word(ppc_effective_address, ppc_result_d);
}
-void ppc_stw() {
+void dppc_interpreter::ppc_stw() {
ppc_grab_regssa();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
mem_write_dword(ppc_effective_address, ppc_result_d);
}
-void ppc_stwx() {
+void dppc_interpreter::ppc_stwx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
mem_write_dword(ppc_effective_address, ppc_result_d);
}
-void ppc_stwcx() {
+void dppc_interpreter::ppc_stwcx() {
// PLACEHOLDER CODE FOR STWCX - We need to check for reserve memory
if (rc_flag == 0) {
ppc_illegalsubop31();
@@ -1477,7 +1477,7 @@ void ppc_stwcx() {
}
}
-void ppc_stwu() {
+void dppc_interpreter::ppc_stwu() {
ppc_grab_regssa();
if (reg_a != 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -1489,7 +1489,7 @@ void ppc_stwu() {
}
}
-void ppc_stwux() {
+void dppc_interpreter::ppc_stwux() {
ppc_grab_regssab();
if (reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1500,14 +1500,14 @@ void ppc_stwux() {
}
}
-void ppc_stwbrx() {
+void dppc_interpreter::ppc_stwbrx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = BYTESWAP_32(ppc_result_d);
mem_write_dword(ppc_effective_address, ppc_result_d);
}
-void ppc_stmw() {
+void dppc_interpreter::ppc_stmw() {
ppc_grab_regssa();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1523,7 +1523,7 @@ void ppc_stmw() {
}
}
-void ppc_lbz() {
+void dppc_interpreter::ppc_lbz() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1531,7 +1531,7 @@ void ppc_lbz() {
ppc_store_result_regd();
}
-void ppc_lbzu() {
+void dppc_interpreter::ppc_lbzu() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
if ((reg_a != reg_d) || reg_a != 0) {
@@ -1545,14 +1545,14 @@ void ppc_lbzu() {
}
}
-void ppc_lbzx() {
+void dppc_interpreter::ppc_lbzx() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = mem_grab_byte(ppc_effective_address);
ppc_store_result_regd();
}
-void ppc_lbzux() {
+void dppc_interpreter::ppc_lbzux() {
ppc_grab_regsdab();
if ((reg_a != reg_d) || reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1566,7 +1566,7 @@ void ppc_lbzux() {
}
-void ppc_lhz() {
+void dppc_interpreter::ppc_lhz() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1574,7 +1574,7 @@ void ppc_lhz() {
ppc_store_result_regd();
}
-void ppc_lhzu() {
+void dppc_interpreter::ppc_lhzu() {
ppc_grab_regsda();
if ((reg_a != reg_d) || reg_a != 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -1588,14 +1588,14 @@ void ppc_lhzu() {
}
}
-void ppc_lhzx() {
+void dppc_interpreter::ppc_lhzx() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = mem_grab_word(ppc_effective_address);
ppc_store_result_regd();
}
-void ppc_lhzux() {
+void dppc_interpreter::ppc_lhzux() {
ppc_grab_regsdab();
if ((reg_a != reg_d) || reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1608,7 +1608,7 @@ void ppc_lhzux() {
}
}
-void ppc_lha() {
+void dppc_interpreter::ppc_lha() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1621,7 +1621,7 @@ void ppc_lha() {
ppc_store_result_regd();
}
-void ppc_lhau() {
+void dppc_interpreter::ppc_lhau() {
ppc_grab_regsda();
if ((reg_a != reg_d) || reg_a != 0) {
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
@@ -1640,7 +1640,7 @@ void ppc_lhau() {
}
}
-void ppc_lhaux() {
+void dppc_interpreter::ppc_lhaux() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
uint16_t val = mem_grab_word(ppc_effective_address);
@@ -1654,7 +1654,7 @@ void ppc_lhaux() {
ppc_store_result_rega();
}
-void ppc_lhax() {
+void dppc_interpreter::ppc_lhax() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
uint16_t val = mem_grab_word(ppc_effective_address);
@@ -1666,14 +1666,14 @@ void ppc_lhax() {
ppc_store_result_regd();
}
-void ppc_lhbrx() {
+void dppc_interpreter::ppc_lhbrx() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = (uint32_t)(BYTESWAP_16(mem_grab_word(ppc_effective_address)));
ppc_store_result_regd();
}
-void ppc_lwz() {
+void dppc_interpreter::ppc_lwz() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1681,14 +1681,14 @@ void ppc_lwz() {
ppc_store_result_regd();
}
-void ppc_lwbrx() {
+void dppc_interpreter::ppc_lwbrx() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = BYTESWAP_32(mem_grab_dword(ppc_effective_address));
ppc_store_result_regd();
}
-void ppc_lwzu() {
+void dppc_interpreter::ppc_lwzu() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
if ((reg_a != reg_d) || reg_a != 0) {
@@ -1702,14 +1702,14 @@ void ppc_lwzu() {
}
}
-void ppc_lwzx() {
+void dppc_interpreter::ppc_lwzx() {
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
ppc_result_d = mem_grab_dword(ppc_effective_address);
ppc_store_result_regd();
}
-void ppc_lwzux() {
+void dppc_interpreter::ppc_lwzux() {
ppc_grab_regsdab();
if ((reg_a != reg_d) || reg_a != 0) {
ppc_effective_address = ppc_result_a + ppc_result_b;
@@ -1722,7 +1722,7 @@ void ppc_lwzux() {
ppc_store_result_rega();
}
-void ppc_lwarx() {
+void dppc_interpreter::ppc_lwarx() {
// Placeholder - Get the reservation of memory implemented!
ppc_grab_regsdab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
@@ -1731,7 +1731,7 @@ void ppc_lwarx() {
ppc_store_result_regd();
}
-void ppc_lmw() {
+void dppc_interpreter::ppc_lmw() {
ppc_grab_regsda();
ppc_effective_address = (int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF));
ppc_effective_address += (reg_a > 0) ? ppc_result_a : 0;
@@ -1743,7 +1743,7 @@ void ppc_lmw() {
} while (reg_d < 32);
}
-void ppc_lswi() {
+void dppc_interpreter::ppc_lswi() {
ppc_grab_regsda();
ppc_effective_address = ppc_result_a;
grab_inb = (ppc_cur_instruction >> 11) & 31;
@@ -1786,7 +1786,7 @@ void ppc_lswi() {
}
}
-void ppc_lswx() {
+void dppc_interpreter::ppc_lswx() {
ppc_grab_regsdab();
// Invalid instruction forms
if ((ppc_result_d == 0) && (ppc_result_a == 0)) {
@@ -1833,7 +1833,7 @@ void ppc_lswx() {
}
}
-void ppc_stswi() {
+void dppc_interpreter::ppc_stswi() {
ppc_grab_regssa();
ppc_effective_address = (reg_a == 0) ? 0 : ppc_result_a;
grab_inb = (ppc_cur_instruction >> 11) & 31;
@@ -1871,7 +1871,7 @@ void ppc_stswi() {
}
}
-void ppc_stswx() {
+void dppc_interpreter::ppc_stswx() {
ppc_grab_regssab();
ppc_effective_address = (reg_a == 0) ? ppc_result_b : (ppc_result_a + ppc_result_b);
grab_inb = ppc_state.spr[SPR::XER] & 127;
@@ -1910,35 +1910,35 @@ void ppc_stswx() {
// TLB Instructions
-void ppc_tlbie() {
+void dppc_interpreter::ppc_tlbie() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
/* placeholder */
}
-void ppc_tlbia() {
+void dppc_interpreter::ppc_tlbia() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
/* placeholder */
}
-void ppc_tlbld() {
+void dppc_interpreter::ppc_tlbld() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
/* placeholder */
}
-void ppc_tlbli() {
+void dppc_interpreter::ppc_tlbli() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
/* placeholder */
}
-void ppc_tlbsync() {
+void dppc_interpreter::ppc_tlbsync() {
#ifdef PROFILER
supervisor_inst_num++;
#endif
diff --git a/execution/interpreter_loop.cpp b/execution/interpreter_loop.cpp
index d9cb245..8b70ed2 100644
--- a/execution/interpreter_loop.cpp
+++ b/execution/interpreter_loop.cpp
@@ -51,7 +51,7 @@ void round_robin_bench() {
std::chrono::high_resolution_clock::time_point dummy = std::chrono::high_resolution_clock::now();
for (int i = 0; i < 4096; i++) {
- ppc_ori(); //execute NOPs as a basic test
+ dppc_interpreter::ppc_ori(); //execute NOPs as a basic test
}
std::chrono::high_resolution_clock::time_point dummy2 = std::chrono::high_resolution_clock::now();