From 9b25f26ed860e73231717c8cd9d6a77541d7d2c5 Mon Sep 17 00:00:00 2001 From: David Guillen Fandos Date: Mon, 13 Dec 2021 22:26:49 +0100 Subject: [PATCH] [x86] Fix division r3 sign value calculation --- x86/x86_emit.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/x86/x86_emit.h b/x86/x86_emit.h index 53a3721..0280c12 100644 --- a/x86/x86_emit.h +++ b/x86/x86_emit.h @@ -2223,10 +2223,9 @@ static void function_cc execute_swi(u32 pc) generate_store_reg(a0, 0); \ generate_store_reg(a1, 1); \ generate_mov(a1, a0); \ - generate_shift_right(a1, 31); \ - generate_xor(a1, a0); \ - generate_shift_right_arithmetic(a0, 31); \ - generate_add(a0, a1); \ + generate_shift_right_arithmetic(a1, 31); \ + generate_xor(a0, a1); \ + generate_sub(a0, a1); \ generate_store_reg(a0, 3); \ generate_branch_patch_conditional(jmpinst, translation_ptr); \ } @@ -2243,10 +2242,9 @@ static void function_cc execute_swi(u32 pc) generate_store_reg(a0, 0); \ generate_store_reg(a1, 1); \ generate_mov(a1, a0); \ - generate_shift_right(a1, 31); \ - generate_xor(a1, a0); \ - generate_shift_right_arithmetic(a0, 31); \ - generate_add(a0, a1); \ + generate_shift_right_arithmetic(a1, 31); \ + generate_xor(a0, a1); \ + generate_sub(a0, a1); \ generate_store_reg(a0, 3); \ generate_branch_patch_conditional(jmpinst, translation_ptr); \ }