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: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] TCG: Fix I64-on-32bit-host temporaries
Date: Thu, 30 Jan 2014 13:59:24 +0000

On 19 January 2014 15:53, Alexander Graf <address@hidden> 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>

Thanks, applied. (This was breaking 'make check' on 32 bit hosts
so it seemed worth applying as a buildfix.)

-- PMM



reply via email to

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