asm/io.h; why does writel() write an le32 on ppc?

Gabriel Paubert paubert at iram.es
Wed Mar 7 12:15:11 EST 2001


On Tue, 6 Mar 2001, Brad Parker wrote:

>
> Gabriel Paubert wrote:
> >On Tue, 6 Mar 2001, Brad Parker wrote:
> ...
> >> in asm/io.h it uses out_le32, unless the machine is an APUS, in which
> >> case it just writes big endian...
> >>
> >> (is PCI defined as little endian?)
> >
> >Sadly, yes.
>
> Ok, so the APUS pci bridge must be doing byte swapping.  I assume the
> ppc macintosh pci bridges do not byte swap...

Nor any other PPC bridge that I know (unless you put it in little-endian
mode because of the address munging that the processor does, but the
munging is not dependant on the size of the transfer). Byte
swapping bridges are painful to handle when you try to move structures as
a block across the bridges (the way the byte lanes are connected between
both sides of the bridges changes depending on the size of the transfer).
I prefer very much byte address preserving bridges, like PMAC/PreP/CHRP.

	Regards,
	Gabriel.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/






More information about the Linuxppc-dev mailing list