Hi Philippe, On 12/9/20 10:27 AM, Philippe Mathieu-Daudé wrote: > On 12/8/20 8:48 PM, Claudio Fontana wrote: >> From: Eduardo Habkost <ehabk...@redhat.com> >> >> Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> >> [claudio: wrapped in CONFIG_TCG] >> Signed-off-by: Claudio Fontana <cfont...@suse.de> >> Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> >> --- > ... >> diff --git a/include/hw/core/tcg-cpu-ops.h b/include/hw/core/tcg-cpu-ops.h >> index 4475ef0996..109291ac52 100644 >> --- a/include/hw/core/tcg-cpu-ops.h >> +++ b/include/hw/core/tcg-cpu-ops.h >> @@ -10,9 +10,6 @@ >> #ifndef TCG_CPU_OPS_H >> #define TCG_CPU_OPS_H > > Missing for TranslationBlock: > > #include "hw/core/cpu.h"
this file though is only included from hw/core/cpu.h itself under CONFIG_TCG.. > >> >> -/** >> - * struct TcgCpuOperations: TCG operations specific to a CPU class >> - */ > > Why remove the comment? a mistake, will fix. > >> typedef struct TcgCpuOperations { >> /** >> * @initialize: Initalize TCG state >> @@ -20,6 +17,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, struct TranslationBlock *tb); >> } TcgCpuOperations; > ... > >