Port-amd64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Why does membar_consumer() do anything on x86_64?
On Nov 14, 8:34am, david%l8s.co.uk@localhost (David Laight) wrote:
-- Subject: Re: Why does membar_consumer() do anything on x86_64?
| On Sat, Nov 12, 2011 at 12:03:12AM +0000, Christos Zoulas wrote:
| > In article <20111111085910.865F214A28B%mail.netbsd.org@localhost>,
| > YAMAMOTO Takashi <yamt%mwd.biglobe.ne.jp@localhost> wrote:
| > >hi,
| > >
| > >what's the status of this topic?
| >
| > I believe Dennis is right (from my experience). One has to be careful
| > though with certain compilers (not gcc) that re-order memory
| > accesses of volatile variables, when using aggressive optimizations.
|
| Is that allowed? I thought that was one of the restrictions that
| 'volatile' implied.
I think so and I consider it a bug.
| In which case you might need the gcc membar (if I've got the syntax right):
| asm volatile("" ::: "memory" );
| that tells gcc that the (empty) asm instruction might look at, and
| modify, any part of memory - so the compiler cannot keep any
| non-local values in registers across the statement.
Which is exactly what we do to get around the problem.
christos
Home |
Main Index |
Thread Index |
Old Index