[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v15 04/23] cpu: Move synchronize_from_tb() to tcg_ops
From: |
Alex Bennée |
Subject: |
Re: [PATCH v15 04/23] cpu: Move synchronize_from_tb() to tcg_ops |
Date: |
Thu, 04 Feb 2021 11:44:14 +0000 |
User-agent: |
mu4e 1.5.7; emacs 28.0.50 |
Claudio Fontana <cfontana@suse.de> writes:
> On 2/3/21 1:31 PM, Claudio Fontana wrote:
>> On 2/3/21 11:11 AM, Alex Bennée wrote:
>>>
>>> Claudio Fontana <cfontana@suse.de> writes:
>>>
>>>> From: Eduardo Habkost <ehabkost@redhat.com>
>>>>
>>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>>>>
>>>> [claudio: wrapped target code in CONFIG_TCG]
>>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>>> ---
>>>> include/hw/core/cpu.h | 20 +++++++++++---------
>>>> accel/tcg/cpu-exec.c | 4 ++--
>>>> target/arm/cpu.c | 4 +++-
>>>> target/avr/cpu.c | 2 +-
>>>> target/hppa/cpu.c | 2 +-
>>>> target/i386/tcg/tcg-cpu.c | 2 +-
>>>> target/microblaze/cpu.c | 2 +-
>>>> target/mips/cpu.c | 4 +++-
>>>> target/riscv/cpu.c | 2 +-
>>>> target/rx/cpu.c | 2 +-
>>>> target/sh4/cpu.c | 2 +-
>>>> target/sparc/cpu.c | 2 +-
>>>> target/tricore/cpu.c | 2 +-
>>>> 13 files changed, 28 insertions(+), 22 deletions(-)
>>>>
>>>> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
>>>> index d0b17dcc4c..b9803885e5 100644
>>>> --- a/include/hw/core/cpu.h
>>>> +++ b/include/hw/core/cpu.h
>>>> @@ -86,6 +86,17 @@ typedef struct TcgCpuOperations {
>>>> * Called when the first CPU is realized.
>>>> */
>>>> void (*initialize)(void);
>>>> + /**
>>>> + * @synchronize_from_tb: Synchronize state from a TCG
>>>> #TranslationBlock
>>>> + *
>>>> + * This is called when we abandon execution of a TB before
>>>> + * starting it, and must set all parts of the CPU state which
>>>> + * the previous TB in the chain may not have updated. This
>>>> + * will need to do more. If this hook is not implemented then
>>>> + * the default is to call @set_pc(tb->pc).
>>>> + */
>>>> + void (*synchronize_from_tb)(CPUState *cpu,
>>>> + const struct TranslationBlock *tb);
>>>
>>> Did you miss my comment last time or just not think it flowed better?
>>>
>>> ...TB in the chain may not have updated. By default when no hook is
>>> defined a call is made to @set_pc(tb->pc). If more state needs to be
>>> restored the front-end must provide a hook function and restore all the
>>> state there.
>>>
>>> Either way:
>>>
>>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>>>
>>
>> Hi Alex, sorry for missing this change, can add it for the next respin,
>>
>> and thanks for looking at this,
>>
>> Ciao,
>>
>> Claudio
>
> /**
>
> * @synchronize_from_tb: Synchronize state from a TCG #TranslationBlock
>
> *
>
> * This is called when we abandon execution of a TB before starting it,
>
> * and must set all parts of the CPU state which the previous TB in the
>
> * chain may not have updated.
>
> * By default, when this is NULL, a call is made to @set_pc(tb->pc).
>
> *
>
> * If more state needs to be restored, the target must implement a
>
> * function to restore all the state, and register it here.
>
> */
>
>
> I changed the wording a bit, because to me it is easier to think about
> "target" than about "front-end", but maybe I am missing something.
> I am also not in love with the term hook, we are trying to end up with a
> proper interface, as we complete this series,
> a nice struct that the target can provide with all the functions necessary to
> implement the TCG operations.
>
> Let me know if this requires additional revision,
LGTM
--
Alex Bennée
[PATCH v15 09/23] cpu: move cc->do_interrupt to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 06/23] cpu: Move tlb_fill to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 07/23] cpu: Move debug_excp_handler to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 08/23] target/arm: do not use cc->do_interrupt for KVM directly, Claudio Fontana, 2021/02/01
[PATCH v15 05/23] cpu: Move cpu_exec_* to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 10/23] cpu: move cc->transaction_failed to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 13/23] cpu: move adjust_watchpoint_address to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 11/23] cpu: move do_unaligned_access to tcg_ops, Claudio Fontana, 2021/02/01
[PATCH v15 20/23] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn, Claudio Fontana, 2021/02/01