Linus> It seems to me that at least the fbcon people want more than
Linus> just to avoid byte swapping: wat they fundamentally want is not
Linus> non-byte-swapped data, they really fundamentally want control
Linus> at a very low level. I bet they'd be happy with not just
Linus> avoiding the byte swap, but also avoiding the ordering
Linus> constraints (or at least controlling them on a higher level).
Linus> So __writel() would probably fit their needs better too than
Linus> any "big-endian" or "native-endian" thing - because it really
Linus> fundamentally is about direct access rather than about
Linus> endianness.
Linus, please don't do this.
I think __writel() should expect little endian access as well, we need
both __writel() which doesn't do ordering _and_ writel_be() since it
will otherwise cause problems on big endian machines if you want to
write a portable device driver optimized with wmb()'s in the right
place if __writel() suddenly doesn't to byte swapping.
In fact we will need at least:
writel() - ordered, little endian
__writel() - non ordered (and possibly other things) - little endian
writel_be() - like writel() but big endian
__writel_be() - non ordered - big endian
The only one that could possibly be left out is the ordered
writel_be() but I think we should put it in there as well.
Jes
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/