qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/2] Fix g2h() for 32-bit targets on 64-bit host


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH 2/2] Fix g2h() for 32-bit targets on 64-bit hosts
Date: Wed, 3 Aug 2016 09:40:09 +0100

On 3 August 2016 at 04:15, Benjamin Herrenschmidt
<address@hidden> wrote:
> The current constructs ends up cropping the host address to 32-bit
> which crashes for me running 32-bit ppc programs on an x86_64.
>
> Signed-off-by: Benjamin Herrenschmidt <address@hidden>
> ---
>
> Not sure who to CC for this...
>
>  include/exec/cpu_ldst.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h
> index 6eb5fe8..0164535 100644
> --- a/include/exec/cpu_ldst.h
> +++ b/include/exec/cpu_ldst.h
> @@ -49,7 +49,7 @@
>
>  #if defined(CONFIG_USER_ONLY)
>  /* All direct uses of g2h and h2g need to go away for usermode softmmu.  */
> -#define g2h(x) ((void *)((unsigned long)(target_ulong)(x) + guest_base))
> +#define g2h(x) ((void *)(guest_base + (unsigned long)(target_ulong)(x)))

I'm confused. Is this just swapping the order of the operands to '+'?
I wouldn't expect that to make any difference because typecast has
higher precedence than '+'...

I run 32-bit (ARM) programs on x86-64 a lot so I would be surprised
if g2h() was broken like this.

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]