Commit a4a99d71b29ef6e506feeabc119e8ddf8490b07b
1 parent
90cb786c
Fix for 32-bit MIPS.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4622 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
9 deletions
target-mips/translate.c
... | ... | @@ -1904,15 +1904,16 @@ static void gen_muldiv (DisasContext *ctx, uint32_t opc, |
1904 | 1904 | { |
1905 | 1905 | TCGv r_tmp1 = tcg_temp_new(TCG_TYPE_I64); |
1906 | 1906 | TCGv r_tmp2 = tcg_temp_new(TCG_TYPE_I64); |
1907 | - | |
1908 | - tcg_gen_ext32s_tl(cpu_T[0], cpu_T[0]); | |
1909 | - tcg_gen_ext32s_tl(cpu_T[1], cpu_T[1]); | |
1910 | - tcg_gen_div_i64(r_tmp1, cpu_T[0], cpu_T[1]); | |
1911 | - tcg_gen_rem_i64(r_tmp2, cpu_T[0], cpu_T[1]); | |
1912 | - tcg_gen_ext32s_tl(r_tmp1, r_tmp1); | |
1913 | - tcg_gen_ext32s_tl(r_tmp2, r_tmp2); | |
1914 | - gen_store_LO(r_tmp1, 0); | |
1915 | - gen_store_HI(r_tmp2, 0); | |
1907 | + TCGv r_tmp3 = tcg_temp_new(TCG_TYPE_I64); | |
1908 | + | |
1909 | + tcg_gen_ext_tl_i64(r_tmp1, cpu_T[0]); | |
1910 | + tcg_gen_ext_tl_i64(r_tmp2, cpu_T[1]); | |
1911 | + tcg_gen_div_i64(r_tmp3, r_tmp1, r_tmp2); | |
1912 | + tcg_gen_rem_i64(r_tmp2, r_tmp1, r_tmp2); | |
1913 | + tcg_gen_trunc_i64_tl(cpu_T[0], r_tmp3); | |
1914 | + tcg_gen_trunc_i64_tl(cpu_T[1], r_tmp2); | |
1915 | + gen_store_LO(cpu_T[0], 0); | |
1916 | + gen_store_HI(cpu_T[1], 0); | |
1916 | 1917 | } |
1917 | 1918 | gen_set_label(l1); |
1918 | 1919 | } | ... | ... |