Patchwork tci: fix build breakage for target-sparc

login
register
mail settings
Submitter Michael Roth
Date Oct. 8, 2012, 8:45 p.m.
Message ID <1349729149-6481-1-git-send-email-mdroth@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/190120/
State New
Headers show

Comments

Michael Roth - Oct. 8, 2012, 8:45 p.m.
commit c28ae41 introduced GETPC() usage for sparc, which is currently
not defined when building with --enable-tcg-interpreter. Add sparc to
the list of targets we selectively define GETPC() for.

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 exec-all.h |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Stefan Weil - Oct. 8, 2012, 9:03 p.m.
Am 08.10.2012 22:45, schrieb Michael Roth:
> commit c28ae41 introduced GETPC() usage for sparc, which is currently
> not defined when building with --enable-tcg-interpreter. Add sparc to
> the list of targets we selectively define GETPC() for.
>
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
>   exec-all.h |    3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/exec-all.h b/exec-all.h
> index 6516da0..f7f649e 100644
> --- a/exec-all.h
> +++ b/exec-all.h
> @@ -296,7 +296,8 @@ extern int tb_invalidated_flag;
>   #if defined(CONFIG_TCG_INTERPRETER)
>   /* Alpha and SH4 user mode emulations and Softmmu call GETPC().
>      For all others, GETPC remains undefined (which makes TCI a little faster. */
> -# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4)
> +# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4) \
> +     || defined(TARGET_SPARC)
>   extern uintptr_t tci_tb_ptr;
>   #  define GETPC() tci_tb_ptr
>   # endif

Reviewed-by: Stefan Weil <sw@weilnetz.de>

Maybe whoever commits that patch can fix the comment, too.
I don't think we need a 2nd patch for that.

Regards

Stefan W.
Richard Henderson - Oct. 8, 2012, 10:19 p.m.
On 10/08/2012 01:45 PM, Michael Roth wrote:
>  /* Alpha and SH4 user mode emulations and Softmmu call GETPC().
>     For all others, GETPC remains undefined (which makes TCI a little faster. */
> -# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4)
> +# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4) \
> +     || defined(TARGET_SPARC)
>  extern uintptr_t tci_tb_ptr;
>  #  define GETPC() tci_tb_ptr

Why is this conditional?  All targets probably ought to be using it
when raising runtime exceptions -- particularly fp exceptions.


r~
Stefan Weil - Oct. 9, 2012, 5:22 a.m.
Am 09.10.2012 00:19, schrieb Richard Henderson:
> On 10/08/2012 01:45 PM, Michael Roth wrote:
>>   /* Alpha and SH4 user mode emulations and Softmmu call GETPC().
>>      For all others, GETPC remains undefined (which makes TCI a little faster. */
>> -# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4)
>> +# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4) \
>> +     || defined(TARGET_SPARC)
>>   extern uintptr_t tci_tb_ptr;
>>   #  define GETPC() tci_tb_ptr
> Why is this conditional?  All targets probably ought to be using it
> when raising runtime exceptions -- particularly fp exceptions.
>
>
> r~
>

See the comment: "which makes TCI a little faster".

When GETPC is undefined, tci.c saves an assignment
to a global variable per interpreted TCG code
which is a significant reduction.

Maybe there are better solutions, of course.

Regards
Stefan
Aurelien Jarno - Oct. 19, 2012, 7:32 p.m.
On Mon, Oct 08, 2012 at 03:45:49PM -0500, Michael Roth wrote:
> commit c28ae41 introduced GETPC() usage for sparc, which is currently
> not defined when building with --enable-tcg-interpreter. Add sparc to
> the list of targets we selectively define GETPC() for.
> 
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
>  exec-all.h |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/exec-all.h b/exec-all.h
> index 6516da0..f7f649e 100644
> --- a/exec-all.h
> +++ b/exec-all.h
> @@ -296,7 +296,8 @@ extern int tb_invalidated_flag;
>  #if defined(CONFIG_TCG_INTERPRETER)
>  /* Alpha and SH4 user mode emulations and Softmmu call GETPC().
>     For all others, GETPC remains undefined (which makes TCI a little faster. */
> -# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4)
> +# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4) \
> +     || defined(TARGET_SPARC)
>  extern uintptr_t tci_tb_ptr;
>  #  define GETPC() tci_tb_ptr
>  # endif
> -- 
> 1.7.9.5
> 

Thanks, applied.

Patch

diff --git a/exec-all.h b/exec-all.h
index 6516da0..f7f649e 100644
--- a/exec-all.h
+++ b/exec-all.h
@@ -296,7 +296,8 @@  extern int tb_invalidated_flag;
 #if defined(CONFIG_TCG_INTERPRETER)
 /* Alpha and SH4 user mode emulations and Softmmu call GETPC().
    For all others, GETPC remains undefined (which makes TCI a little faster. */
-# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4)
+# if defined(CONFIG_SOFTMMU) || defined(TARGET_ALPHA) || defined(TARGET_SH4) \
+     || defined(TARGET_SPARC)
 extern uintptr_t tci_tb_ptr;
 #  define GETPC() tci_tb_ptr
 # endif