On Sun, 4 Jul 2021 at 16:49, Giovanni Mascellani gmascellani@codeweavers.com wrote:
Il 03/07/21 17:42, Stefan Dösinger ha scritto:
Am Freitag, 2. Juli 2021, 17:09:50 CEST schrieb Jan Sikorski:
I guess it’s to force a memory load on each call, which could be omitted if the function is inlined. X86 loads are atomic IIRC. - Jan
It was necessary to make ARM CPUs re-load the data from memory. gcc inlines the function and would put both head and tail in a register and loop forever.
My understanding is that this solution is not correct. As far is I understand, the "volatile" qualifier doesn't force the generation of appropriate fencing and doesn't protect you from data races:
Well, yes, it doesn't. Are you saying we need those here though?