[PATCH] Remove powerpc specific parts of 3c509 driver
Segher Boessenkool
segher at kernel.crashing.org
Wed Sep 20 10:21:41 EST 2006
> Nah. We have the basic rule that readl/writel are little endian.
> PowerPC
> additionally provides arch specific low level in_{be,le}32 type
> accessors with explicit endianness. Or you can also use
> cpu_to_le32/le32_to_cpu kind of macros to convert between native and
> explicit endianness.
Sure, PCI busses are little-endian. But is readX()/writeX() for PCI
only? I sure hope not.
It would make a lot more sense if readX()/writeX() used the endianness
of the bus they are performed on. PowerPC byteswaps are cheap -- for
16- and 32-bit accesses. They're quite bad for 64-bit though; it would
be a pity to end up doing two of those for a 64-bit big-endian I/O
access
(one on the access itself, one to convert the data back to CPU order).
This would happily solve the problem of the various variations of
byte-swapping bus bridges, too ("natural" swap, 32-bit swap, 64-bit
swap,
perhaps others that I thankfully have never seen or cannot remember).
Now you can say, use readl_be() or something similar, but that's a)
ugly,
b) error-prone, c) exponential interface explosion, d) ugly.
Segher
More information about the Linuxppc-dev
mailing list