Patchwork tcg: fix build on 32-bit hppa, ppc and sparc hosts

login
register
mail settings
Submitter Jay Foad
Date Feb. 22, 2010, 3:53 p.m.
Message ID <ee2e06e91002220753l3e3848d7q6afb99adeabc510e@mail.gmail.com>
Download mbox | patch
Permalink /patch/45969/
State New
Headers show

Comments

Jay Foad - Feb. 22, 2010, 3:53 p.m.
The qemu_ld32s op is only defined if TCG_TARGET_REG_BITS == 64.

Signed-off-by: Jay Foad <jay.foad@gmail.com>
---
 tcg/hppa/tcg-target.c  |    1 -
 tcg/ppc/tcg-target.c   |    2 --
 tcg/sparc/tcg-target.c |    4 ++++
 3 files changed, 4 insertions(+), 3 deletions(-)

         break;
@@ -1471,7 +1473,9 @@ static const TCGTargetOpDef sparc_op_defs[] = {
     { INDEX_op_qemu_ld16u, { "r", "L" } },
     { INDEX_op_qemu_ld16s, { "r", "L" } },
     { INDEX_op_qemu_ld32u, { "r", "L" } },
+#if TCG_TARGET_REG_BITS == 64
     { INDEX_op_qemu_ld32s, { "r", "L" } },
+#endif

     { INDEX_op_qemu_st8, { "L", "L" } },
     { INDEX_op_qemu_st16, { "L", "L" } },
Stefan Weil - Feb. 22, 2010, 4:35 p.m.
Jay Foad schrieb:
> The qemu_ld32s op is only defined if TCG_TARGET_REG_BITS == 64.
>
> Signed-off-by: Jay Foad <jay.foad@gmail.com>
> ---
>  tcg/hppa/tcg-target.c  |    1 -
>  tcg/ppc/tcg-target.c   |    2 --
>  tcg/sparc/tcg-target.c |    4 ++++
>  3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
> index ddce60c..4677971 100644
> --- a/tcg/hppa/tcg-target.c
> +++ b/tcg/hppa/tcg-target.c
> @@ -936,7 +936,6 @@ static const TCGTargetOpDef hppa_op_defs[] = {
>      { INDEX_op_qemu_ld16u, { "r", "L", "L" } },
>      { INDEX_op_qemu_ld16s, { "r", "L", "L" } },
>      { INDEX_op_qemu_ld32u, { "r", "L", "L" } },
> -    { INDEX_op_qemu_ld32s, { "r", "L", "L" } },
>      { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } },
>
>      { INDEX_op_qemu_st8, { "L", "L", "L" } },
> diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
> index 903b69f..15d8b85 100644
> --- a/tcg/ppc/tcg-target.c
> +++ b/tcg/ppc/tcg-target.c
> @@ -1693,7 +1693,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>      { INDEX_op_qemu_ld16u, { "r", "L" } },
>      { INDEX_op_qemu_ld16s, { "r", "L" } },
>      { INDEX_op_qemu_ld32u, { "r", "L" } },
> -    { INDEX_op_qemu_ld32s, { "r", "L" } },
>   

No. As I wrote in the original thread,
conditional compilation is needed here
(or you will get new compile errors).

>      { INDEX_op_qemu_ld64, { "r", "r", "L" } },
>
>      { INDEX_op_qemu_st8, { "K", "K" } },
> @@ -1706,7 +1705,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>      { INDEX_op_qemu_ld16u, { "r", "L", "L" } },
>      { INDEX_op_qemu_ld16s, { "r", "L", "L" } },
>      { INDEX_op_qemu_ld32u, { "r", "L", "L" } },
> -    { INDEX_op_qemu_ld32s, { "r", "L", "L" } },
>   

dto.

>      { INDEX_op_qemu_ld64, { "r", "L", "L", "L" } },
>
>      { INDEX_op_qemu_st8, { "K", "K", "K" } },
> diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
> index 891b8c4..d4ddaa7 100644
> --- a/tcg/sparc/tcg-target.c
> +++ b/tcg/sparc/tcg-target.c
> @@ -1319,9 +1319,11 @@ static inline void tcg_out_op(TCGContext *s,
> int opc, const TCGArg *args,
>      case INDEX_op_qemu_ld32u:
>          tcg_out_qemu_ld(s, args, 2);
>          break;
> +#if TCG_TARGET_REG_BITS == 64
>      case INDEX_op_qemu_ld32s:
>          tcg_out_qemu_ld(s, args, 2 | 4);
>          break;
> +#endif
>      case INDEX_op_qemu_st8:
>          tcg_out_qemu_st(s, args, 0);
>          break;
> @@ -1471,7 +1473,9 @@ static const TCGTargetOpDef sparc_op_defs[] = {
>      { INDEX_op_qemu_ld16u, { "r", "L" } },
>      { INDEX_op_qemu_ld16s, { "r", "L" } },
>      { INDEX_op_qemu_ld32u, { "r", "L" } },
> +#if TCG_TARGET_REG_BITS == 64
>      { INDEX_op_qemu_ld32s, { "r", "L" } },
> +#endif
>
>      { INDEX_op_qemu_st8, { "L", "L" } },
>      { INDEX_op_qemu_st16, { "L", "L" } },
>
>
>
>   



Maybe my comment applies also to the change in
tcg/hppa/tcg-target.c, but I tested only ppc
(using cross compilation).

Regards,
Stefan
Jay Foad - Feb. 22, 2010, 4:37 p.m.
>> --- a/tcg/ppc/tcg-target.c
>> +++ b/tcg/ppc/tcg-target.c
>> @@ -1693,7 +1693,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>>      { INDEX_op_qemu_ld16u, { "r", "L" } },
>>      { INDEX_op_qemu_ld16s, { "r", "L" } },
>>      { INDEX_op_qemu_ld32u, { "r", "L" } },
>> -    { INDEX_op_qemu_ld32s, { "r", "L" } },
>>
>
> No. As I wrote in the original thread,
> conditional compilation is needed here
> (or you will get new compile errors).

In tcg/ppc/, TCG_TARGET_REG_BITS is always 32, isn't it?

Thanks,
Jay.
malc - Feb. 22, 2010, 4:42 p.m.
On Mon, 22 Feb 2010, Jay Foad wrote:

> The qemu_ld32s op is only defined if TCG_TARGET_REG_BITS == 64.

Your mail client mangled the patch.

[..snip..]

> @@ -1319,9 +1319,11 @@ static inline void tcg_out_op(TCGContext *s,
> int opc, const TCGArg *args,

Here.

[..snip..]

Fixed and applied.
Stefan Weil - Feb. 22, 2010, 4:58 p.m.
Jay Foad schrieb:
>>> --- a/tcg/ppc/tcg-target.c
>>> +++ b/tcg/ppc/tcg-target.c
>>> @@ -1693,7 +1693,6 @@ static const TCGTargetOpDef ppc_op_defs[] = {
>>>      { INDEX_op_qemu_ld16u, { "r", "L" } },
>>>      { INDEX_op_qemu_ld16s, { "r", "L" } },
>>>      { INDEX_op_qemu_ld32u, { "r", "L" } },
>>> -    { INDEX_op_qemu_ld32s, { "r", "L" } },
>>>
>>>       
>> No. As I wrote in the original thread,
>> conditional compilation is needed here
>> (or you will get new compile errors).
>>     
>
> In tcg/ppc/, TCG_TARGET_REG_BITS is always 32, isn't it?
>
> Thanks,
> Jay.
>   


Yes, you are right. Please excuse my wrong feedback.

Stefan
Stuart Brady - March 3, 2010, 10:06 p.m.
On Mon, Feb 22, 2010 at 05:35:16PM +0100, Stefan Weil wrote:
> Maybe my comment applies also to the change in
> tcg/hppa/tcg-target.c, but I tested only ppc
> (using cross compilation).

HPPA host support is 32-bit only for the time being, as there isn't even
a 64-bit userspace for HPPA, yet, and that's unlikely to change soon.

Patch

diff --git a/tcg/hppa/tcg-target.c b/tcg/hppa/tcg-target.c
index ddce60c..4677971 100644
--- a/tcg/hppa/tcg-target.c
+++ b/tcg/hppa/tcg-target.c
@@ -936,7 +936,6 @@  static const TCGTargetOpDef hppa_op_defs[] = {
     { INDEX_op_qemu_ld16u, { "r", "L", "L" } },
     { INDEX_op_qemu_ld16s, { "r", "L", "L" } },
     { INDEX_op_qemu_ld32u, { "r", "L", "L" } },
-    { INDEX_op_qemu_ld32s, { "r", "L", "L" } },
     { INDEX_op_qemu_ld64, { "r", "r", "L", "L" } },

     { INDEX_op_qemu_st8, { "L", "L", "L" } },
diff --git a/tcg/ppc/tcg-target.c b/tcg/ppc/tcg-target.c
index 903b69f..15d8b85 100644
--- a/tcg/ppc/tcg-target.c
+++ b/tcg/ppc/tcg-target.c
@@ -1693,7 +1693,6 @@  static const TCGTargetOpDef ppc_op_defs[] = {
     { INDEX_op_qemu_ld16u, { "r", "L" } },
     { INDEX_op_qemu_ld16s, { "r", "L" } },
     { INDEX_op_qemu_ld32u, { "r", "L" } },
-    { INDEX_op_qemu_ld32s, { "r", "L" } },
     { INDEX_op_qemu_ld64, { "r", "r", "L" } },

     { INDEX_op_qemu_st8, { "K", "K" } },
@@ -1706,7 +1705,6 @@  static const TCGTargetOpDef ppc_op_defs[] = {
     { INDEX_op_qemu_ld16u, { "r", "L", "L" } },
     { INDEX_op_qemu_ld16s, { "r", "L", "L" } },
     { INDEX_op_qemu_ld32u, { "r", "L", "L" } },
-    { INDEX_op_qemu_ld32s, { "r", "L", "L" } },
     { INDEX_op_qemu_ld64, { "r", "L", "L", "L" } },

     { INDEX_op_qemu_st8, { "K", "K", "K" } },
diff --git a/tcg/sparc/tcg-target.c b/tcg/sparc/tcg-target.c
index 891b8c4..d4ddaa7 100644
--- a/tcg/sparc/tcg-target.c
+++ b/tcg/sparc/tcg-target.c
@@ -1319,9 +1319,11 @@  static inline void tcg_out_op(TCGContext *s,
int opc, const TCGArg *args,
     case INDEX_op_qemu_ld32u:
         tcg_out_qemu_ld(s, args, 2);
         break;
+#if TCG_TARGET_REG_BITS == 64
     case INDEX_op_qemu_ld32s:
         tcg_out_qemu_ld(s, args, 2 | 4);
         break;
+#endif
     case INDEX_op_qemu_st8:
         tcg_out_qemu_st(s, args, 0);