summaryrefslogtreecommitdiffstats
path: root/include/hw/core
diff options
context:
space:
mode:
authorEduardo Habkost2021-02-04 17:39:09 +0100
committerRichard Henderson2021-02-05 21:24:14 +0100
commite9e51b7154404efc9af8735ab87c658a9c434cfd (patch)
treead00627447756bca2ecb716f7eea6dd6f21fa54a /include/hw/core
parenttcg/tci: Remove TCG_CONST (diff)
downloadqemu-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.h16
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;
};
/*