• Linus Walleij's avatar
    parisc: Remove 64bit access on 32bit machines · 77bfc8bd
    Linus Walleij authored
    The parisc was using some readq/writeq accessors without special
    considerations as to what will happen on 32bit CPUs if you do
    this. Maybe we have been lucky that it "just worked" on 32bit
    due to the compiler behaviour, or the code paths were never
    executed.
    
    Fix the two offending code sites like this:
    
    arch/parisc/lib/iomap.c:
    
    - Put ifdefs around the 64bit accessors and make sure
      that ioread64, ioread64be, iowrite64 and iowrite64be
      are not available on 32bit builds.
    
    - Also fold in a bug fix where 64bit access was by
      mistake using 32bit writel() accessors rather
      than 64bit writeq().
    
    drivers/parisc/sba_iommu.c:
    
    - Access any 64bit registers using _lo_hi-semantics by way
      of the readq and writeq operations provided by
      <linux/io-64-nonatomic-lo-hi.h>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
    Cc: James E.J. Bottomley <James.Bottomley@HansenPartnership.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: linux-parisc@vger.kernel.org
    Cc: linux-arch@vger.kernel.org
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    77bfc8bd
iomap.c 13 KB