diff options
author | Eduardo Habkost | 2021-02-04 17:39:09 +0100 |
---|---|---|
committer | Richard Henderson | 2021-02-05 21:24:14 +0100 |
commit | e9e51b7154404efc9af8735ab87c658a9c434cfd (patch) | |
tree | ad00627447756bca2ecb716f7eea6dd6f21fa54a /include/hw/core | |
parent | tcg/tci: Remove TCG_CONST (diff) | |
download | qemu-e9e51b7154404efc9af8735ab87c658a9c434cfd.tar.gz qemu-e9e51b7154404efc9af8735ab87c658a9c434cfd.tar.xz qemu-e9e51b7154404efc9af8735ab87c658a9c434cfd.zip |
cpu: Introduce TCGCpuOperations struct
The TCG-specific CPU methods will be moved to a separate struct,
to make it easier to move accel-specific code outside generic CPU
code in the future. Start by moving tcg_initialize().
The new CPUClass.tcg_opts field may eventually become a pointer,
but keep it an embedded struct for now, to make code conversion
easier.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
[claudio: move TCGCpuOperations inside include/hw/core/cpu.h]
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20210204163931.7358-2-cfontana@suse.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'include/hw/core')
-rw-r--r-- | include/hw/core/cpu.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 140fa32a5e..26b89fd7a4 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -77,6 +77,19 @@ typedef struct CPUWatchpoint CPUWatchpoint; struct TranslationBlock; /** + * struct TcgCpuOperations: TCG operations specific to a CPU class + */ +typedef struct TcgCpuOperations { + /** + * @initialize: Initalize TCG state + * + * Called when the first CPU is realized. + */ + void (*initialize)(void); + +} TcgCpuOperations; + +/** * CPUClass: * @class_by_name: Callback to map -cpu command line model name to an * instantiatable CPU type. @@ -222,12 +235,13 @@ struct CPUClass { void (*disas_set_info)(CPUState *cpu, disassemble_info *info); vaddr (*adjust_watchpoint_address)(CPUState *cpu, vaddr addr, int len); - void (*tcg_initialize)(void); const char *deprecation_note; /* Keep non-pointer data at the end to minimize holes. */ int gdb_num_core_regs; bool gdb_stop_before_watchpoint; + + TcgCpuOperations tcg_ops; }; /* |