[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v1 1/3] target/ppc: Emulate LL/SC using cmpx
From: |
Nikunj A Dadhania |
Subject: |
Re: [Qemu-devel] [PATCH RFC v1 1/3] target/ppc: Emulate LL/SC using cmpxchg helpers |
Date: |
Fri, 07 Apr 2017 11:12:08 +0530 |
User-agent: |
Notmuch/0.23.5 (https://notmuchmail.org) Emacs/25.1.1 (x86_64-redhat-linux-gnu) |
David Gibson <address@hidden> writes:
> [ Unknown signature status ]
> On Thu, Apr 06, 2017 at 03:52:47PM +0530, Nikunj A Dadhania wrote:
>> Emulating LL/SC with cmpxchg is not correct, since it can suffer from
>> the ABA problem. However, portable parallel code is written assuming
>> only cmpxchg which means that in practice this is a viable alternative.
>>
>> Signed-off-by: Nikunj A Dadhania <address@hidden>
>> ---
>> target/ppc/translate.c | 24 +++++++++++++++++++++---
>> 1 file changed, 21 insertions(+), 3 deletions(-)
>>
>> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
>> index b6abc60..a9c733d 100644
>> --- a/target/ppc/translate.c
>> +++ b/target/ppc/translate.c
>> @@ -73,6 +73,7 @@ static TCGv cpu_cfar;
>> #endif
>> static TCGv cpu_xer, cpu_so, cpu_ov, cpu_ca, cpu_ov32, cpu_ca32;
>> static TCGv cpu_reserve;
>> +static TCGv cpu_reserve_val;
>> static TCGv cpu_fpscr;
>> static TCGv_i32 cpu_access_type;
>>
>> @@ -181,6 +182,9 @@ void ppc_translate_init(void)
>> cpu_reserve = tcg_global_mem_new(cpu_env,
>> offsetof(CPUPPCState, reserve_addr),
>> "reserve_addr");
>> + cpu_reserve_val = tcg_global_mem_new(cpu_env,
>> + offsetof(CPUPPCState, reserve_val),
>> + "reserve_val");
>
> I notice that lqarx is not updated. Does that matter?
Thats correct, I haven't touched that yet. Most of the locks are
implemented using lwarx/stwcx.
Regards
Nikunj