asm-generic/io.h: allow barriers in io{read,write}{16,32}be
authorHoria Geantă <horia.geanta@nxp.com>
Thu, 19 May 2016 15:10:43 +0000 (18:10 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 31 May 2016 08:41:49 +0000 (16:41 +0800)
commit7a1aedba7061948eee4d188740e24ffb20ff7ab7
tree4855ba940f8bf67f5ecbd39f4afcb17a1a57bbca
parent21a3d3b234cd170deded6beb42409f2a9cd01917
asm-generic/io.h: allow barriers in io{read,write}{16,32}be

While reviewing the addition of io{read,write}64be accessors, Arnd

-finds a potential problem:
"If an architecture overrides readq/writeq to have barriers but does
not override ioread64be/iowrite64be, this will lack the barriers and
behave differently from the little-endian version. I think the only
affected architecture is ARC, since ARM and ARM64 both override the
big-endian accessors to have the correct barriers, and all others
don't use barriers at all."

-suggests a fix for the same problem in existing code (16/32-bit
accessors); the fix leads "to a double-swap on architectures that
don't override the io{read,write}{16,32}be accessors, but it will
work correctly on all architectures without them having to override
these accessors."

Suggested-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/asm-generic/io.h