* [Qemu-devel] How to get 64-bit MMIO?
@ 2010-02-18 14:41 Dmitry Antipov
2010-02-18 21:39 ` Blue Swirl
0 siblings, 1 reply; 2+ messages in thread
From: Dmitry Antipov @ 2010-02-18 14:41 UTC (permalink / raw)
To: qemu-devel
Hello all,
is there any support for 64-bit MMIO?
I'm trying to emulate 16750-like UART by adopting current 16550A emulation.
The problem is that my (MIPS) hardware is 64-bit, and native software
issues 64-bit load/stores (LD/SD) to talk with all hardware registers,
which are all 64-bit too (for UART case, only 8 lower bits are used, BTW).
As I can see, qemu splits 64-bit access into two 32-bit back-to-back ones,
but this gives catastrophic results if host and guest has different
byte order - i.e. write 0x0000000000000001 to 0x100 gives write 0x00000000
to 0x100 and 0x10000000 to 0x104 because 64-bit quantities are swapped within
32-bit halves.
Dmitry
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] How to get 64-bit MMIO?
2010-02-18 14:41 [Qemu-devel] How to get 64-bit MMIO? Dmitry Antipov
@ 2010-02-18 21:39 ` Blue Swirl
0 siblings, 0 replies; 2+ messages in thread
From: Blue Swirl @ 2010-02-18 21:39 UTC (permalink / raw)
To: Dmitry Antipov; +Cc: qemu-devel
On Thu, Feb 18, 2010 at 4:41 PM, Dmitry Antipov <antipov@mvista.com> wrote:
> Hello all,
>
> is there any support for 64-bit MMIO?
No, though there has been some discussion about it before which you
can find in the archives. 64 bit MMIO would be useful for Sparc32,
Sparc64 and Alpha.
> I'm trying to emulate 16750-like UART by adopting current 16550A emulation.
> The problem is that my (MIPS) hardware is 64-bit, and native software
> issues 64-bit load/stores (LD/SD) to talk with all hardware registers,
> which are all 64-bit too (for UART case, only 8 lower bits are used, BTW).
> As I can see, qemu splits 64-bit access into two 32-bit back-to-back ones,
> but this gives catastrophic results if host and guest has different
> byte order - i.e. write 0x0000000000000001 to 0x100 gives write 0x00000000
> to 0x100 and 0x10000000 to 0x104 because 64-bit quantities are swapped
> within
> 32-bit halves.
The numbers don't look correct. Anyway, I'd suspect the device should
do some byte swapping. Without code it's hard to tell.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-02-18 21:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-18 14:41 [Qemu-devel] How to get 64-bit MMIO? Dmitry Antipov
2010-02-18 21:39 ` Blue Swirl
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).