diff mbox

[v12,02/27] cpu-exec: Avoid global variables in icount-related functions

Message ID 149942810176.8972.2271168155656858925.stgit@frigg.lan (mailing list archive)
State New, archived
Headers show

Commit Message

Lluís Vilanova July 7, 2017, 11:48 a.m. UTC
Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 include/exec/gen-icount.h |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Alex Bennée July 11, 2017, 7:25 p.m. UTC | #1
Lluís Vilanova <vilanova@ac.upc.edu> writes:

> Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>

I guess. I assume this is also something Emilio is targeting with his
multi-threaded translation work.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

> ---
>  include/exec/gen-icount.h |   10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/include/exec/gen-icount.h b/include/exec/gen-icount.h
> index 62d462e494..6c28ef59c3 100644
> --- a/include/exec/gen-icount.h
> +++ b/include/exec/gen-icount.h
> @@ -19,7 +19,7 @@ static inline void gen_tb_start(TranslationBlock *tb)
>          count = tcg_temp_new_i32();
>      }
>
> -    tcg_gen_ld_i32(count, cpu_env,
> +    tcg_gen_ld_i32(count, tcg_ctx.tcg_env,
>                     -ENV_OFFSET + offsetof(CPUState, icount_decr.u32));
>
>      if (tb->cflags & CF_USE_ICOUNT) {
> @@ -37,7 +37,7 @@ static inline void gen_tb_start(TranslationBlock *tb)
>      tcg_gen_brcondi_i32(TCG_COND_LT, count, 0, exitreq_label);
>
>      if (tb->cflags & CF_USE_ICOUNT) {
> -        tcg_gen_st16_i32(count, cpu_env,
> +        tcg_gen_st16_i32(count, tcg_ctx.tcg_env,
>                           -ENV_OFFSET + offsetof(CPUState, icount_decr.u16.low));
>      }
>
> @@ -62,14 +62,16 @@ static void gen_tb_end(TranslationBlock *tb, int num_insns)
>  static inline void gen_io_start(void)
>  {
>      TCGv_i32 tmp = tcg_const_i32(1);
> -    tcg_gen_st_i32(tmp, cpu_env, -ENV_OFFSET + offsetof(CPUState, can_do_io));
> +    tcg_gen_st_i32(tmp, tcg_ctx.tcg_env,
> +                   -ENV_OFFSET + offsetof(CPUState, can_do_io));
>      tcg_temp_free_i32(tmp);
>  }
>
>  static inline void gen_io_end(void)
>  {
>      TCGv_i32 tmp = tcg_const_i32(0);
> -    tcg_gen_st_i32(tmp, cpu_env, -ENV_OFFSET + offsetof(CPUState, can_do_io));
> +    tcg_gen_st_i32(tmp, tcg_ctx.tcg_env,
> +                   -ENV_OFFSET + offsetof(CPUState, can_do_io));
>      tcg_temp_free_i32(tmp);
>  }
>


--
Alex Bennée
Lluís Vilanova July 12, 2017, 8:42 a.m. UTC | #2
Alex Bennée writes:

> Lluís Vilanova <vilanova@ac.upc.edu> writes:

>> Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>

> I guess. I assume this is also something Emilio is targeting with his
> multi-threaded translation work.

Yes, Emilio suggested to format this patch in a way that won't conflict with his
changes.

Thanks,
  Lluis
Emilio Cota July 12, 2017, 10:06 p.m. UTC | #3
On Wed, Jul 12, 2017 at 11:42:57 +0300, Lluís Vilanova wrote:
> Alex Bennée writes:
> 
> > Lluís Vilanova <vilanova@ac.upc.edu> writes:
> 
> >> Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
> 
> > I guess. I assume this is also something Emilio is targeting with his
> > multi-threaded translation work.
> 
> Yes, Emilio suggested to format this patch in a way that won't conflict with his
> changes.

53f6672bcf57d8 is already in master so you should drop this patch for
your next respin.

BTW the problem for the multi-threaded translation work is the global
"static TCGLabel *exitreq_label."

		Emilio
diff mbox

Patch

diff --git a/include/exec/gen-icount.h b/include/exec/gen-icount.h
index 62d462e494..6c28ef59c3 100644
--- a/include/exec/gen-icount.h
+++ b/include/exec/gen-icount.h
@@ -19,7 +19,7 @@  static inline void gen_tb_start(TranslationBlock *tb)
         count = tcg_temp_new_i32();
     }
 
-    tcg_gen_ld_i32(count, cpu_env,
+    tcg_gen_ld_i32(count, tcg_ctx.tcg_env,
                    -ENV_OFFSET + offsetof(CPUState, icount_decr.u32));
 
     if (tb->cflags & CF_USE_ICOUNT) {
@@ -37,7 +37,7 @@  static inline void gen_tb_start(TranslationBlock *tb)
     tcg_gen_brcondi_i32(TCG_COND_LT, count, 0, exitreq_label);
 
     if (tb->cflags & CF_USE_ICOUNT) {
-        tcg_gen_st16_i32(count, cpu_env,
+        tcg_gen_st16_i32(count, tcg_ctx.tcg_env,
                          -ENV_OFFSET + offsetof(CPUState, icount_decr.u16.low));
     }
 
@@ -62,14 +62,16 @@  static void gen_tb_end(TranslationBlock *tb, int num_insns)
 static inline void gen_io_start(void)
 {
     TCGv_i32 tmp = tcg_const_i32(1);
-    tcg_gen_st_i32(tmp, cpu_env, -ENV_OFFSET + offsetof(CPUState, can_do_io));
+    tcg_gen_st_i32(tmp, tcg_ctx.tcg_env,
+                   -ENV_OFFSET + offsetof(CPUState, can_do_io));
     tcg_temp_free_i32(tmp);
 }
 
 static inline void gen_io_end(void)
 {
     TCGv_i32 tmp = tcg_const_i32(0);
-    tcg_gen_st_i32(tmp, cpu_env, -ENV_OFFSET + offsetof(CPUState, can_do_io));
+    tcg_gen_st_i32(tmp, tcg_ctx.tcg_env,
+                   -ENV_OFFSET + offsetof(CPUState, can_do_io));
     tcg_temp_free_i32(tmp);
 }