On 16 January 2014 16:59, Thomas Falcon <tlfal...@linux.vnet.ibm.com> wrote:
> This patch allows registers to be properly read from and written to
> when using the gdbstub to debug a ppc guest running in little
> endian mode.  It accomplishes this goal by byte swapping the values of
> any registers if the MSR:LE value is set.
>
> Signed-off-by: Thomas Falcon<tlfal...@linux.vnet.ibm.com>
> ---
> Have created wrapper functions that swap mem_buf in-place.
> mem_buf is swapped regardless of the the host's endianness if msr_le is
> true.
> ---

> +    int len = ppc_cpu_gdb_read_register(cs, mem_buf, n),i;
> +    if(msr_le)
> +    {
> +        uint8_t tmp;
> +        for(i=0;i<len/2;i++)
> +        {
> +            tmp=*(mem_buf+i);
> +            *(mem_buf+i)=*(mem_buf+len-1-i);
> +            *(mem_buf+len-1-i)=tmp;
> +        }

Please don't roll your own byte swapping.

Also see my remarks on the previous patch series suggesting
that we should look at this in a more holistic way than
just randomly fixing small bits of things. A good place
to start would be "what should the semantics of stl_p()
be for a QEMU where the CPU is currently operating with
a reversed endianness to the TARGET_WORDS_BIGENDIAN
setting?".

thanks
-- PMM

Reply via email to