Messages in this thread | | | Subject | Re: [patch] spinlocks: remove 'volatile' | From | Arjan van de Ven <> | Date | Sat, 08 Jul 2006 11:51:48 +0200 |
| |
On Sat, 2006-07-08 at 12:20 +0300, Avi Kivity wrote: > Arjan van de Ven wrote: > > > > > > > > It could be argued that gcc's implementation of volatile is wrong, and > > > that gcc should add the appropriate serializing instructions before and > > > after volatile accesses. > > > > > > Of course, that would make volatile even more suboptimal, but at least > > > correct. > > > > with PCI, and the PCI posting rules, there is no "one" serializing > > instruction, you need to know the specifics of the device in question to > > cause the flush. So at least there is no universal possible > > implementation of volatile as you suggest ;-) > > > > A serializing volatile makes it possible to write portable code to > access pci mmio. You'd just follow a write with a read or whatever the > rules say.
yeah except that the compiler cannot know what to read; reading back the same memory location is NOT correct nor safe. It's device specific, for some devices it'll be safe, for others you have to read some OTHER location.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |