qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 00/26] AREG0 conversion


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH 00/26] AREG0 conversion
Date: Sun, 23 Oct 2011 12:14:05 +0000

On Wed, Oct 19, 2011 at 17:25, Richard Henderson <address@hidden> wrote:
> On 10/09/2011 12:20 PM, Blue Swirl wrote:
>>> I didn't bother to attach the patches, if someone wants to try, the
>>> patch set can be found here:
>>>        git://repo.or.cz/qemu/blueswirl.git
>>>        http://repo.or.cz/r/qemu/blueswirl.git
>>
>> I pushed the patch set to repo.or.cz so if someone wants to comment or
>> test, they are there.
>>
>> It's mostly the same stuff as before, though I split int_helper.c to
>> int32_helper.c and int64_helper.c since they have nothing in common
>> and extracted TCG iargs/oargs changes.
>>
>>> Blue Swirl (26):
>>>  Document softmmu templates
>>>  softmmu_header: pass CPUState to tlb_fill
>>>  Move GETPC from dyngen-exec.h to exec-all.h
>
> I don't see these three in the repo.

Because I applied them earlier...

>>>  Sparc: fix coding style
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split helper.c
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: move trivial functions from op_helper.c
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: avoid AREG0 for raise_exception and helper_debug
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: fix coding style
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split FPU and VIS op helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: avoid AREG0 for float and VIS ops
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split lazy condition code handling op helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: avoid AREG0 for lazy condition code helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split CWP and PSTATE op helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: avoid AREG0 for CWP and PSTATE helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
> An especially nice cleanup too, avoiding all of the saved_env frobbing.
>
>>>  Sparc: avoid AREG0 for softint op helpers and Leon cache control
>
> This one loses do_modify_softint in the move.  Which gets re-instated
> in your following "convert int_helper to trace framework" patch.  But
> in the meantime the series is non-bisectable.

Nice catch, will fix. I think I'll apply the patches before this one
now to shorten the series a bit.

>>>  Sparc: avoid AREG0 for division op helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: fix coding style in helper.c
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split MMU helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: convert mmu_helper to trace framework
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: convert int_helper to trace framework
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: convert win_helper to trace framework
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: split load and store op helpers
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  TCG: add 5 arg helpers to def-helper.h
>
> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  Sparc: avoid AREG0 for memory access helpers
>
>> +#define WRAP_LD(rettype, fn)                                    \
>> +    rettype cpu_ ## fn (CPUState *env1, target_ulong addr)      \
>> +    {                                                           \
>> +        CPUState *saved_env;                                    \
>> +        rettype ret;                                            \
>> +                                                                \
>> +        saved_env = env;                                        \
>> +        env = env1;                                             \
>> +        ret = fn(addr);                                         \
>> +        env = saved_env;                                        \
>> +        return ret;                                             \
>> +    }
>
> I don't think this actually works in the fault case.  In particular GETPC
> will return an incorrect address.  OTOH, I suppose we already have this
> problem from the other ldst helpers, e.g. ld_asi, which is where these new
> routines are going to be called from.  So this doesn't really change the
> state of affairs much.  I have no good ideas for solving this problem.

OK, maybe it's better to leave this and the 5 arg patch from 1.0.

> Reviewed-by: Richard Henderson <address@hidden>
>
>>>  softmmu templates: optionally pass CPUState to memory access
>>>    functions
>>>  Sparc: avoid AREG0 wrappers for memory access helpers
>
> Both look ok.  I'm certainly not fond of the intermediate state.  If we
> convert target-sparc and tcg-i386, we should convert all of them, and
> not leave that intermediate state for long.
>
> Something that's clearly not going to happen for the 1.0 release.

Fully agree. Thanks for the review.



reply via email to

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