[Top][All Lists]

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

Re: [Qemu-devel] [PATCH v5 07/18] qemu-thread: add simple test-and-set s

From: Sergey Fedorov
Subject: Re: [Qemu-devel] [PATCH v5 07/18] qemu-thread: add simple test-and-set spinlock
Date: Tue, 17 May 2016 22:57:07 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2

On 17/05/16 22:19, Richard Henderson wrote:
> On 05/17/2016 10:13 AM, Sergey Fedorov wrote:
>>>> +static inline void qemu_spin_lock(QemuSpin *spin)
>>>> +{
>>>> +    while (atomic_test_and_set_acquire(&spin->value)) {
>> >From gcc-4.8 info page, node "__atomic Builtins", description of
>> __atomic_test_and_set():
>>     It should be only used for operands of type 'bool' or 'char'.
> Hum.  I thought I remembered all operand sizes there, but I've just re-checked
> and you're right about bool (and really only bool).
> Perhaps we should just stick with __sync_test_and_set then.  I'm thinking here
> of e.g. armv6, a reasonable host, which can't operate on 1 byte atomic values.

Sorry, I can't see reading ARMv6 ARM that 1-byte access can't be atomic.
What I've found:

    B2.4.1 Normal memory attribute
    Shared Normal memory

        ... Reads to Shared Normal Memory that are aligned in memory to
        the size of the access must be atomic.

Kind regards,

reply via email to

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