[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: |
Claudio Fontana |
Subject: |
Re: [PATCH v15 04/23] cpu: Move synchronize_from_tb() to tcg_ops |
Date: |
Thu, 4 Feb 2021 12:18:30 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
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,
Ciao,
CLaudio
[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