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. -- H.J.