What is the reel purpose of in_beXX() and out_beXX() fonctions ?
scottwood at freescale.com
Tue Oct 28 03:45:04 AEDT 2014
On Mon, 2014-10-27 at 13:52 +0100, leroy christophe wrote:
> Many drivers use in_be16(), in_be32(), out_be16(), out_be32(), etc ....
> to access to registrers in IO mapped memory.
> What is the real purpose of those functions, and are they really needed ?
> ioremap() maps the related areas as GUARDED, which means that accesses
> can't be speculative. So what is the benefit of using in_beXX() and
> out_beXX() over simple memory accesses in the area ?
Speculative accesses aren't the only issue -- there's also hardware
reordering (some implementations may not do this on guarded regions, but
I don't think it's architecturally guaranteed), and of course you need
to make sure the compiler doesn't do anything funny.
More information about the Linuxppc-dev