On 06/28/2011 07:05 PM, Vinzent Höfler wrote:
On Tue, 28 Jun 2011 15:54:35 +0200, Michael Schnell <mschn...@lumino.de> wrote:

No, it can't. "volatile" just ensures that accessing the variable results in actual memory accesses. That does not mean cache-coherence, so another core
may still see other (as in "older") values.
This is done by the hardware (but not aggressive enough to ensure atomic instructions to work without additional bus-locking)
It should not.
Right you are. We found that a compiler needs to consider any function call as a "volatile barrier" and is not allowed to cache any memory-value in a register as the called function might somehow know the address and access that variable (even in a single threaded application).

As a CS "Enter" and "Leave" is done as a function call this aspect of my original question is solved.

Thanks,
-Michael
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to