Hi Stefan, >>readl() and ioread32() read the registers in little-endian format! > > Correct. That's how it is implemented on all platforms. Think for example of > an pci device driver. Using these IO functions, the driver will become > platform independent, running without modifications on little- and big-endian > machines.
Ok, I figured that was probably the case. Thanks for the confirmation. >>Should I just be using pointers for remapped processor >>registers, and only use readl(), ioread32(), etc, on external >>memory? > > That's how I do it. Only use readl() and friends for pci spaces (or other > little endian memory mapped areas). I took a look at the Yosemite network and USB drivers, it looks like the authors of those drivers chose to use in_be32() and out_be32(). Personally I like the concept of using pointers, or more usefully pointers to structure overlays for device control. However, the impression I have is that this is inherently more non-portable than using the readl()/writel(), ioread32()/iowrite32(), and now I guess I can add in_be32()/out_be32() to that list. But if you use pointers, thats good enough for me! Cheers Dave