mirror of
https://github.com/dingusdev/dingusppc.git
synced 2025-01-10 13:29:38 +00:00
Merge pull request #3 from maximumspatium/master
More CPU emulation fixes.
This commit is contained in:
commit
8560a540c9
@ -54,7 +54,6 @@ void execute_single_instr()
|
||||
ppc_state.ppc_pc += 4;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
ppc_cur_instruction = 0;
|
||||
}
|
||||
|
||||
void execute_until(uint32_t goal_addr)
|
||||
|
8
main.cpp
8
main.cpp
@ -358,7 +358,6 @@ void execute_interpreter(){
|
||||
ppc_state.ppc_pc += 4;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
ppc_cur_instruction = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -775,7 +774,6 @@ int main(int argc, char **argv)
|
||||
ppc_state.ppc_pc += 4;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
ppc_cur_instruction = 0;
|
||||
}
|
||||
}
|
||||
else if ((checker=="stepp")|(checker=="/stepp")|(checker=="-stepp")){
|
||||
@ -790,7 +788,7 @@ int main(int argc, char **argv)
|
||||
quickinstruction_translate(ppc_state.ppc_pc);
|
||||
ppc_main_opcode();
|
||||
if (grab_branch & !grab_exception){
|
||||
ppc_state.ppc_pc = ppc_effective_address;
|
||||
ppc_state.ppc_pc = ppc_next_instruction_address;
|
||||
grab_branch = 0;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
@ -804,7 +802,6 @@ int main(int argc, char **argv)
|
||||
ppc_state.ppc_pc += 4;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
ppc_cur_instruction = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -833,7 +830,7 @@ int main(int argc, char **argv)
|
||||
quickinstruction_translate(ppc_state.ppc_pc);
|
||||
ppc_main_opcode();
|
||||
if (grab_branch & !grab_exception){
|
||||
ppc_state.ppc_pc = ppc_effective_address;
|
||||
ppc_state.ppc_pc = ppc_next_instruction_address;
|
||||
grab_branch = 0;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
@ -847,7 +844,6 @@ int main(int argc, char **argv)
|
||||
ppc_state.ppc_pc += 4;
|
||||
ppc_tbr_update();
|
||||
}
|
||||
ppc_cur_instruction = 0;
|
||||
}
|
||||
}
|
||||
} else if (checker == "debugger") {
|
||||
|
@ -109,7 +109,7 @@ void msr_status_update(){
|
||||
}
|
||||
|
||||
void ppc_set_cur_instruction(uint32_t mem_index){
|
||||
ppc_cur_instruction += (grab_macmem_ptr[mem_index]) << 24;
|
||||
ppc_cur_instruction = (grab_macmem_ptr[mem_index]) << 24;
|
||||
++mem_index;
|
||||
ppc_cur_instruction += (grab_macmem_ptr[mem_index]) << 16;
|
||||
++mem_index;
|
||||
|
@ -129,7 +129,7 @@ void ppc_grab_regssa(){
|
||||
|
||||
void ppc_grab_regssb(){
|
||||
reg_s = (ppc_cur_instruction >> 21) & 31;
|
||||
reg_b = (ppc_cur_instruction >> 16) & 31;
|
||||
reg_b = (ppc_cur_instruction >> 11) & 31;
|
||||
ppc_result_d = ppc_state.ppc_gpr[reg_s];
|
||||
ppc_result_b = ppc_state.ppc_gpr[reg_b];
|
||||
}
|
||||
@ -1358,7 +1358,7 @@ void ppc_mtsr(){
|
||||
void ppc_mtsrin(){
|
||||
if ((ppc_state.ppc_msr & 0x4000) == 0){
|
||||
ppc_grab_regssb();
|
||||
grab_sr = ppc_result_b & 15;
|
||||
grab_sr = ppc_result_b >> 28;
|
||||
ppc_state.ppc_sr[grab_sr] = ppc_result_d;
|
||||
}
|
||||
}
|
||||
@ -1368,16 +1368,14 @@ void ppc_mfsr(){
|
||||
reg_d = (ppc_cur_instruction >> 21) & 31;
|
||||
grab_sr = (ppc_cur_instruction >> 16) & 15;
|
||||
ppc_state.ppc_gpr[reg_d] = ppc_state.ppc_sr[grab_sr];
|
||||
ppc_store_result_regd();
|
||||
}
|
||||
}
|
||||
|
||||
void ppc_mfsrin(){
|
||||
if ((ppc_state.ppc_msr & 0x4000) == 0){
|
||||
ppc_grab_regssb();
|
||||
grab_sr = ppc_result_b & 15;
|
||||
grab_sr = ppc_result_b >> 28;
|
||||
ppc_state.ppc_gpr[reg_d] = ppc_state.ppc_sr[grab_sr];
|
||||
ppc_store_result_regd();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1391,7 +1389,7 @@ void ppc_mfmsr(){
|
||||
void ppc_mtmsr(){
|
||||
//if ((ppc_state.ppc_msr && 0x4000) == 0){
|
||||
reg_s = (ppc_cur_instruction >> 21) & 31;
|
||||
ppc_state.ppc_msr = ppc_state.ppc_spr[reg_s];
|
||||
ppc_state.ppc_msr = ppc_state.ppc_gpr[reg_s];
|
||||
msr_status_update();
|
||||
//}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user