Re: [Qemu-devel] Is Little endian supported by Qemu -prep

From:

J. Mayer

Subject:

Re: [Qemu-devel] Is Little endian supported by Qemu -prep

Date:

Thu, 07 Apr 2005 12:44:39 +0200

On Thu, 2005-04-07 at 10:02 +0300, Tero Kaarlela wrote:
> Still working on OS/2 PPC edition bootloading. I got patch to ppc_prep.c
> from J Mayer to make it support non-continuous I/O map mode. It seemed
> to work ok. But catched bug in the further code after line mfspr
> r3,1008. I modified ppc_prep.c Processor version from 0x00080000 (g3)
> to 0x00040000 (604) and problem was fixed. Now it crashes after code:
>
> subfic r0,r0,-32690
> mtlr r0
> blr
> (LR = ffef7f1e)
> r0 was 0x00100130 to begin with
>
> This error happens shortly after changinfg MSR state from 0x00000030
> to 0x00000031 (change mode from Big-endian to Little endian) So might
> Little-endian be reason why LR goes nuts?:)
Yes, that's the reason. As far as I know, Qemu has no support for
dynamic endian modes.
I did not think any OS did use LE mode...
Imho, the simple way to handle this is to add a bit in the translation
bloc state (flags in cpu-exec.c) and exend the memory access tables
(using mem_idx in target-ppc/translate.c) for little-endian case.
This is not so hard to do, but as all memory access routines have to be
duplicated, it may take some time to do the patch. The great thing doing
this way is that little endian mode will be as efficient as BE mode..
I'll take a look during the week end and give you a patch so you may go
on testing OS/2.
--
J. Mayer <address@hidden>
Never organized