Commit b6ce8f0aead41b263b28f94d9c34d824e4987be8

Authored by ths
1 parent 9575cb94

Fix pointer calculation for MIPS64 targets.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4665 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 6 additions and 6 deletions
target-mips/translate.c
@@ -740,14 +740,14 @@ static inline void gen_save_pc(target_ulong pc) @@ -740,14 +740,14 @@ static inline void gen_save_pc(target_ulong pc)
740 { 740 {
741 TCGv r_tmp = tcg_temp_new(TCG_TYPE_TL); 741 TCGv r_tmp = tcg_temp_new(TCG_TYPE_TL);
742 TCGv r_tc_off = new_tmp(); 742 TCGv r_tc_off = new_tmp();
743 - TCGv r_tc_off_tl = tcg_temp_new(TCG_TYPE_TL); 743 + TCGv r_tc_off_ptr = tcg_temp_new(TCG_TYPE_PTR);
744 TCGv r_ptr = tcg_temp_new(TCG_TYPE_PTR); 744 TCGv r_ptr = tcg_temp_new(TCG_TYPE_PTR);
745 745
746 tcg_gen_movi_tl(r_tmp, pc); 746 tcg_gen_movi_tl(r_tmp, pc);
747 tcg_gen_ld_i32(r_tc_off, cpu_env, offsetof(CPUState, current_tc)); 747 tcg_gen_ld_i32(r_tc_off, cpu_env, offsetof(CPUState, current_tc));
748 tcg_gen_muli_i32(r_tc_off, r_tc_off, sizeof(target_ulong)); 748 tcg_gen_muli_i32(r_tc_off, r_tc_off, sizeof(target_ulong));
749 - tcg_gen_ext_i32_tl(r_tc_off_tl, r_tc_off);  
750 - tcg_gen_add_ptr(r_ptr, cpu_env, r_tc_off_tl); 749 + tcg_gen_ext_i32_ptr(r_tc_off_ptr, r_tc_off);
  750 + tcg_gen_add_ptr(r_ptr, cpu_env, r_tc_off_ptr);
751 tcg_gen_st_tl(r_tmp, r_ptr, offsetof(CPUState, PC)); 751 tcg_gen_st_tl(r_tmp, r_ptr, offsetof(CPUState, PC));
752 dead_tmp(r_tc_off); 752 dead_tmp(r_tc_off);
753 } 753 }
@@ -756,14 +756,14 @@ static inline void gen_breg_pc(void) @@ -756,14 +756,14 @@ static inline void gen_breg_pc(void)
756 { 756 {
757 TCGv r_tmp = tcg_temp_new(TCG_TYPE_TL); 757 TCGv r_tmp = tcg_temp_new(TCG_TYPE_TL);
758 TCGv r_tc_off = new_tmp(); 758 TCGv r_tc_off = new_tmp();
759 - TCGv r_tc_off_tl = tcg_temp_new(TCG_TYPE_TL); 759 + TCGv r_tc_off_ptr = tcg_temp_new(TCG_TYPE_PTR);
760 TCGv r_ptr = tcg_temp_new(TCG_TYPE_PTR); 760 TCGv r_ptr = tcg_temp_new(TCG_TYPE_PTR);
761 761
762 tcg_gen_ld_tl(r_tmp, cpu_env, offsetof(CPUState, btarget)); 762 tcg_gen_ld_tl(r_tmp, cpu_env, offsetof(CPUState, btarget));
763 tcg_gen_ld_i32(r_tc_off, cpu_env, offsetof(CPUState, current_tc)); 763 tcg_gen_ld_i32(r_tc_off, cpu_env, offsetof(CPUState, current_tc));
764 tcg_gen_muli_i32(r_tc_off, r_tc_off, sizeof(target_ulong)); 764 tcg_gen_muli_i32(r_tc_off, r_tc_off, sizeof(target_ulong));
765 - tcg_gen_ext_i32_tl(r_tc_off_tl, r_tc_off);  
766 - tcg_gen_add_ptr(r_ptr, cpu_env, r_tc_off_tl); 765 + tcg_gen_ext_i32_ptr(r_tc_off_ptr, r_tc_off);
  766 + tcg_gen_add_ptr(r_ptr, cpu_env, r_tc_off_ptr);
767 tcg_gen_st_tl(r_tmp, r_ptr, offsetof(CPUState, PC)); 767 tcg_gen_st_tl(r_tmp, r_ptr, offsetof(CPUState, PC));
768 dead_tmp(r_tc_off); 768 dead_tmp(r_tc_off);
769 } 769 }