On Wed, May 25, 2011 at 4:47 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, May 25, 2011 at 7:36 AM, Andrew Haley <a...@redhat.com> wrote: >> On 05/25/2011 01:34 PM, H.J. Lu wrote: >>> On Wed, May 25, 2011 at 3:26 AM, Andrew Haley <a...@redhat.com> wrote: >>>> On 05/24/2011 07:28 PM, H.J. Lu wrote: >>>> >>>>> This patch implements pause intrinsic suggested by Andi. OK >>>>> for trunk? >>>> >>>> What does "full memory barrier" here mean? >>>> >>>> +@table @code >>>> +@item void __builtin_ia32_pause (void) >>>> +Generates the @code{pause} machine instruction with full memory barrier. >>>> +@end table >>>> >>>> There a memory clobber, but no barrier instruction AFAICS. The >>>> doc needs to explain it a bit better. >>> >>> There are read/load memory barrier, write/store memory barrier and >>> full/general >>> memory barrier. You can find them at >>> >>> http://www.kernel.org/doc/Documentation/memory-barriers.txt >>> >>> Should I include a pointer to it? >> >> No. I know perfectly well what memory barriers are. I'm not asking >> what "full memory barrier" means. >> >> What barrier instruction(s) does __builtin_ia32_pause() generate? >> All I see in the patch is "rep; nop". Is that really a full memory >> barrier? >> > > It is a full memory barrier in the sense that compiler won't move > load/store across it. It is intended for kernel.
There is no such thing if you include accesses to automatic variables. Richard. > -- > H.J. >