Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1675095
| From | Arnd Bergmann <arnd@arndb.de> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 2/7] iomap: implement ioread64 and iowrite64 |
| Date | 2017-06-26 22:50 +0200 |
| Message-ID | <tWJ7j-75V-5@gated-at.bofh.it> (permalink) |
| References | <tVdsS-7hT-17@gated-at.bofh.it> <tVdCy-7lD-19@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
> +u64 ioread64(void __iomem *addr)
> +{
> + u64 low, high;
> +
> + low = ioread32(addr);
> + high = ioread32(addr + sizeof(u32));
> + return low | (high << 32);
> +}
> +u64 ioread64be(void __iomem *addr)
> +{
> + u64 low, high;
> +
> + low = ioread32be(addr + sizeof(u32));
> + high = ioread32be(addr);
> + return low | (high << 32);
> +}
> +#endif
This hardcodes the behavior of include/linux/io-64-nonatomic-hi-lo.h, which
I find rather confusing, as only about one in five drivers wants this
behavior.
I'd suggest you don't add it in lib/iomap.c at all for 32-bit architectures,
but rather use the same logic that we have for readq/writeq in
io-64-nonatomic-hi-lo.h and io-64-nonatomic-lo-hi.h, adding
{lo_hi,hi_lo}_{ioread,iowrite}{,be} to the same files, and provide
the {ioread,iowrite}{,be} macros only if they have not been defined
at that point.
Arnd
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 2/7] iomap: implement ioread64 and iowrite64 Logan Gunthorpe <logang@deltatee.com> - 2017-06-22 19:00 +0200
Re: [PATCH 2/7] iomap: implement ioread64 and iowrite64 Arnd Bergmann <arnd@arndb.de> - 2017-06-26 22:50 +0200
Re: [PATCH 2/7] iomap: implement ioread64 and iowrite64 Logan Gunthorpe <logang@deltatee.com> - 2017-06-26 23:30 +0200
csiph-web