qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] TCG: Fix I64-on-32bit-host temporaries


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH] TCG: Fix I64-on-32bit-host temporaries
Date: Tue, 21 Jan 2014 08:35:52 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

On 01/19/2014 07:53 AM, Alexander Graf wrote:
> We have cache pools of temporaries that we can reuse later when they've
> already been allocated before.
> 
> These cache pools differenciate between the target TCG variable type they
> contain. So we have one pool for I32 and one pool for I64 variables.
> 
> On a 32bit system, we can't work with 64bit registers though. So instead we
> spawn two I32 temporaries for every I64 temporary we create. All caching
> works the same way as on a real 64-bit system though: We create a cache entry
> in the 64bit array for the first i32 index.
> 
> However, when we free such a temporary we free it to the pool of its type
> (which is always i32 on 32bit systems) rather than its base_type (which is
> i64 or i32 depending on the variable). This means we put a temporary that
> is of base_type == i64 into the i32 preallocated temporary pool.
> 
> Eventually, this results in failures like this on 32bit hosts:
> 
>   qemu-system-ppc64: tcg/tcg.c:515: tcg_temp_new_internal: Assertion 
> `ts->base_type == type' failed.
> 
> This patch makes the free routine use the base_type instead for the free case,
> so it's consistent with the temporary allocation. It fixes the above failure
> for me.
> 
> Signed-off-by: Alexander Graf <address@hidden>
> ---
>  tcg/tcg.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <address@hidden>


r~



reply via email to

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