On 10/06/2016 11:40 AM, Paolo Bonzini wrote: > > > On 06/10/2016 10:37, David Gibson wrote: >> On Thu, Oct 06, 2016 at 09:23:11AM +0200, Paolo Bonzini wrote: >>> >>> >>> On 06/10/2016 05:45, David Gibson wrote: >>>> qtest is about testing hardware, not the guest cpu, and whether you're >>>> accessing MMIO space or buffers the hardware will read via DMA, it's >>>> the hardware which determines the correct endianness, not the guest >>>> cpu. >>> >>> Well, sort of... qtest writes are definitely injecting things from the >>> point of view of the guest CPU. For example see Laurent's patches that >>> add RTAS commands to qtest. >> >> Sure. My point is that any guest CPU can do both LE and BE accesses >> pretty simply, so we might as well specify which we want. > > On this I do agree.
Yes. It is pretty confusing today from the test side. To clarify things a little, I came up with this : +static inline uint32_t make_be32(uint32_t data) +{ + return bswap32(data); +} ... + writel(ASPEED_FLASH_BASE, make_be32(some_page_addr)); Which is what a Little Endian CPU would do to write a BE value. So it should probably be called, make_b32_on_le_cpu() to be correct. I am not sure there is a good interface for these accesses ... C.