Patchwork [v2] target-sparc: fix --enable-debug build

login
register
mail settings
Submitter Jay Foad
Date Feb. 20, 2010, 10:45 a.m.
Message ID <ee2e06e91002200245r5212756fs1aec110fa2d64934@mail.gmail.com>
Download mbox | patch
Permalink /patch/45915/
State New
Headers show

Comments

Jay Foad - Feb. 20, 2010, 10:45 a.m.
Use 32-bit arithmetic for the address offset calculation to fix a
build failure on 32-bit hosts.

Signed-off-by: Jay Foad <jay.foad@gmail.com>
---
 target-sparc/translate.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)
Blue Swirl - Feb. 20, 2010, 11:12 a.m.
Thanks, applied.

On 2/20/10, Jay Foad <jay.foad@gmail.com> wrote:
> Use 32-bit arithmetic for the address offset calculation to fix a
>  build failure on 32-bit hosts.
>
>  Signed-off-by: Jay Foad <jay.foad@gmail.com>
>  ---
>   target-sparc/translate.c |   22 +++++++++++-----------
>   1 files changed, 11 insertions(+), 11 deletions(-)
>
>  diff --git a/target-sparc/translate.c b/target-sparc/translate.c
>  index 7e9f0cf..b7d2a32 100644
>  --- a/target-sparc/translate.c
>  +++ b/target-sparc/translate.c
>  @@ -1663,27 +1663,27 @@ static inline TCGv get_src2(unsigned int insn, TCGv def)
>   #ifdef TARGET_SPARC64
>   static inline void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr,
>  TCGv_ptr cpu_env)
>   {
>  -    TCGv r_tl = tcg_temp_new();
>  +    TCGv_i32 r_tl = tcg_temp_new_i32();
>
>      /* load env->tl into r_tl */
>  -    {
>  -        TCGv_i32 r_tl_tmp = tcg_temp_new_i32();
>  -        tcg_gen_ld_i32(r_tl_tmp, cpu_env, offsetof(CPUSPARCState, tl));
>  -        tcg_gen_ext_i32_tl(r_tl, r_tl_tmp);
>  -        tcg_temp_free_i32(r_tl_tmp);
>  -    }
>  +    tcg_gen_ld_i32(r_tl, cpu_env, offsetof(CPUSPARCState, tl));
>
>      /* tl = [0 ... MAXTL_MASK] where MAXTL_MASK must be power of 2 */
>  -    tcg_gen_andi_tl(r_tl, r_tl, MAXTL_MASK);
>  +    tcg_gen_andi_i32(r_tl, r_tl, MAXTL_MASK);
>
>      /* calculate offset to current trap state from env->ts, reuse r_tl */
>  -    tcg_gen_muli_tl(r_tl, r_tl, sizeof (trap_state));
>  +    tcg_gen_muli_i32(r_tl, r_tl, sizeof (trap_state));
>      tcg_gen_addi_ptr(r_tsptr, cpu_env, offsetof(CPUState, ts));
>
>      /* tsptr = env->ts[env->tl & MAXTL_MASK] */
>  -    tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl);
>  +    {
>  +        TCGv_ptr r_tl_tmp = tcg_temp_new_ptr();
>  +        tcg_gen_ext_i32_ptr(r_tl_tmp, r_tl);
>  +        tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl_tmp);
>  +        tcg_temp_free_i32(r_tl_tmp);
>  +    }
>
>  -    tcg_temp_free(r_tl);
>  +    tcg_temp_free_i32(r_tl);
>   }
>   #endif
>
>
>

Patch

diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 7e9f0cf..b7d2a32 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -1663,27 +1663,27 @@  static inline TCGv get_src2(unsigned int insn, TCGv def)
 #ifdef TARGET_SPARC64
 static inline void gen_load_trap_state_at_tl(TCGv_ptr r_tsptr,
TCGv_ptr cpu_env)
 {
-    TCGv r_tl = tcg_temp_new();
+    TCGv_i32 r_tl = tcg_temp_new_i32();

     /* load env->tl into r_tl */
-    {
-        TCGv_i32 r_tl_tmp = tcg_temp_new_i32();
-        tcg_gen_ld_i32(r_tl_tmp, cpu_env, offsetof(CPUSPARCState, tl));
-        tcg_gen_ext_i32_tl(r_tl, r_tl_tmp);
-        tcg_temp_free_i32(r_tl_tmp);
-    }
+    tcg_gen_ld_i32(r_tl, cpu_env, offsetof(CPUSPARCState, tl));

     /* tl = [0 ... MAXTL_MASK] where MAXTL_MASK must be power of 2 */
-    tcg_gen_andi_tl(r_tl, r_tl, MAXTL_MASK);
+    tcg_gen_andi_i32(r_tl, r_tl, MAXTL_MASK);

     /* calculate offset to current trap state from env->ts, reuse r_tl */
-    tcg_gen_muli_tl(r_tl, r_tl, sizeof (trap_state));
+    tcg_gen_muli_i32(r_tl, r_tl, sizeof (trap_state));
     tcg_gen_addi_ptr(r_tsptr, cpu_env, offsetof(CPUState, ts));

     /* tsptr = env->ts[env->tl & MAXTL_MASK] */
-    tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl);
+    {
+        TCGv_ptr r_tl_tmp = tcg_temp_new_ptr();
+        tcg_gen_ext_i32_ptr(r_tl_tmp, r_tl);
+        tcg_gen_add_ptr(r_tsptr, r_tsptr, r_tl_tmp);
+        tcg_temp_free_i32(r_tl_tmp);
+    }

-    tcg_temp_free(r_tl);
+    tcg_temp_free_i32(r_tl);
 }
 #endif