> From: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > Date: Mon, 14 Aug 2017 19:59:55 +0100 > > On 14/08/17 14:25, Mark Kettenis wrote: > > >> Great, thanks for the information - the fact that the nsphy0 has been > >> detected correctly means that the access still works. Looks like I'll > >> have to go digging deeper. > > > > The OpenBSD code uses %asi if necessary to let the hardware do the > > byteswapping. Howver, I think the psycho(4) host bridge also does an > > implicit byteswap. Always has been a bit confusing to me. But the > > code defenitely works correctly on real hardware. > > So tracing through HME register writes it seems the difference between > OpenBSD and the other OSs is that OpenBSD appears to write to the > virtual address 0x40008098000 with a standard (0x80) primary ASI, > whereas the other OSs seem to write directly to the physical address > 0x1ff04000000 with a physical LE ASI. > > Is this because in OpenBSD the memory is being allocated as DVMA memory > via the IOMMU?
Ah, no. For memory mapped io it seems we create an actual little-endian memory mapping (i.e. with the IE bit set). That was probably done to support mapping framebuffers.