qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

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