* memory barriers on sparc
@ 2010-01-25 18:53 Chris Friesen
2010-01-25 21:27 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Chris Friesen @ 2010-01-25 18:53 UTC (permalink / raw)
To: sparclinux
Someone asked a question on comp.programming.threads about memory
barriers, which led me to the discovery that glibc and the kernel use
different semantics for memory barriers on sparc64 (and maybe sparc too,
didn't check).
The kernel uses:
read : LoadLoad
write : StoreStore
This matches my understanding of the behaviour of other architectures as
well. I got confused when I saw that glibc (as of 2.8 at least) uses:
read: LoadLoad | LoadStore
write: StoreLoad | StoreStore
I'm curious about the difference. Could someone explain why glibc uses
additional restrictions and the kernel doesn't?
Thanks,
Chris
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: memory barriers on sparc
2010-01-25 18:53 memory barriers on sparc Chris Friesen
@ 2010-01-25 21:27 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2010-01-25 21:27 UTC (permalink / raw)
To: sparclinux
From: "Chris Friesen" <cfriesen@nortel.com>
Date: Mon, 25 Jan 2010 12:53:32 -0600
>
> Someone asked a question on comp.programming.threads about memory
> barriers, which led me to the discovery that glibc and the kernel use
> different semantics for memory barriers on sparc64 (and maybe sparc too,
> didn't check).
>
> The kernel uses:
>
> read : LoadLoad
> write : StoreStore
>
> This matches my understanding of the behaviour of other architectures as
> well. I got confused when I saw that glibc (as of 2.8 at least) uses:
>
> read: LoadLoad | LoadStore
> write: StoreLoad | StoreStore
>
> I'm curious about the difference. Could someone explain why glibc uses
> additional restrictions and the kernel doesn't?
The kernel knows some things about what ordering modes it will ever
operate in (I'm referring to the current memory model as is programmed
into the %pstate register), and the details of all existing sparc64
chips. So it can elide several kinds of barrier specifiations.
GLIBC could do it too, at least under Linux, but to be
"fully Sparc V9 compliant" it needs to use the full barriers.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-01-25 21:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-25 18:53 memory barriers on sparc Chris Friesen
2010-01-25 21:27 ` David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.