What is the reel purpose of in_beXX() and out_beXX() fonctions ?

Scott Wood 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.

-Scott




More information about the Linuxppc-dev mailing list