On Wed, Jun 28, 2017 at 1:02 AM, Logan Gunthorpe <logang@xxxxxxxxxxxx> wrote: > #include <linux/types.h> > #include <linux/bitops.h> > -#include <linux/io.h> > +#include <linux/io-64-nonatomic-hi-lo.h> Here you include the hi-lo variant unconditionally. > -#else /* CONFIG_64BIT */ > -static inline void wr_reg64(void __iomem *reg, u64 data) > -{ > -#ifndef CONFIG_CRYPTO_DEV_FSL_CAAM_IMX > - if (caam_little_end) { > - wr_reg32((u32 __iomem *)(reg) + 1, data >> 32); > - wr_reg32((u32 __iomem *)(reg), data); > - } else > #endif > - { > - wr_reg32((u32 __iomem *)(reg), data >> 32); > - wr_reg32((u32 __iomem *)(reg) + 1, data); > - } > + iowrite64be(data, reg); > } However, the #else path here uses lo-hi instead. I guess we have to decide how to define iowrite64be_lo_hi() first: it could either byteswap the 64-bit value first, then write the two halves, or it could write the two halves, doing a 32-bit byte swap on each. Arnd