qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] SPARC: Add and use CPU_FEATURE_CASA


From: Fabien Chouteau
Subject: Re: [Qemu-devel] [PATCH] SPARC: Add and use CPU_FEATURE_CASA
Date: Wed, 05 Feb 2014 10:58:17 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

On 11/28/2013 10:55 AM, Sebastian Huber wrote:
> Hello,
> 
> On 2013-11-26 15:04, Sebastian Huber wrote:
>> The LEON3 processor has support for the CASA instruction which is
>> normally only available for SPARC V9 processors.  Binutils 2.24
>> and GCC 4.9 will support this instruction for LEON3.  GCC uses it to
>> generate C11 atomic operations.
>> ---
>>   target-sparc/cpu.c         |    3 +-
>>   target-sparc/cpu.h         |    4 ++-
>>   target-sparc/helper.h      |    4 ++-
>>   target-sparc/ldst_helper.c |   26 +++++++++++++-----------
>>   target-sparc/translate.c   |   47 
>> ++++++++++++++++++++++++++++---------------
>>   5 files changed, 52 insertions(+), 32 deletions(-)
> [...]
> 
> this patch doesn't work since the ASI 0x80 used for the synthetic CAS 
> instruction is not implemented in helper_ld_asi() for !TARGET_SPARC64.
> 
> I tried to add a
> 
>     case 0x80: /* Primary */
>         {
>             switch (size) {
>             case 1:
>                 ret = ldub_raw(addr);
>                 break;
>             case 2:
>                 ret = lduw_raw(addr);
>                 break;
>             case 4:
>                 ret = ldl_raw(addr);
>                 break;
>             default:
>             case 8:
>                 ret = ldq_raw(addr);
>                 break;
>             }
>         }
>         break;
> 
> but this results in a Qemu segmentation fault.
> 

Hello Sebastian,

I missed this email. It's easier for me to see you message if I'm in
copy, also add Blue Swirl <address@hidden> in copy for all SPARC
patches.

ASI 0x80 doesn't make sense in SPARC32 where does this value come from?
I guess it's TCGv_i32 r_asi = tcg_const_i32(GET_FIELD(insn, 19, 26));,
right?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]