Merge pull request #67 from mihaip/upstream-power

Fix emulation of doz, dozi, and nabs POWER instructions
This commit is contained in:
dingusdev 2023-12-01 07:48:38 -07:00 committed by GitHub
commit 277be165b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -115,7 +115,7 @@ void dppc_interpreter::power_doz() {
if (oe_flag) if (oe_flag)
power_setsoov(ppc_result_a, ppc_result_b, ppc_result_d); power_setsoov(ppc_result_a, ppc_result_b, ppc_result_d);
ppc_store_result_rega(); ppc_store_result_regd();
} }
void dppc_interpreter::power_dozi() { void dppc_interpreter::power_dozi() {
@ -125,7 +125,7 @@ void dppc_interpreter::power_dozi() {
} else { } else {
ppc_result_d = simm - ppc_result_a; ppc_result_d = simm - ppc_result_a;
} }
ppc_store_result_rega(); ppc_store_result_regd();
} }
void dppc_interpreter::power_lscbx() { void dppc_interpreter::power_lscbx() {
@ -223,7 +223,7 @@ void dppc_interpreter::power_mul() {
void dppc_interpreter::power_nabs() { void dppc_interpreter::power_nabs() {
ppc_grab_regsda(); ppc_grab_regsda();
ppc_result_d = (0x80000000 | ppc_result_a); ppc_result_d = ppc_result_a & 0x80000000 ? ppc_result_a : -ppc_result_a;
if (rc_flag) if (rc_flag)
ppc_changecrf0(ppc_result_d); ppc_changecrf0(ppc_result_d);