aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilippe Mathieu-Daudé <philmd@linaro.org>2025-01-23 13:46:03 +0100
committerPhilippe Mathieu-Daudé <philmd@linaro.org>2025-03-09 17:00:47 +0100
commit43610f3184f846da948e8ab9dbc0c5de1e9bde79 (patch)
treedc11dbe944e44d11ada8dbb041cf85ec97705806
parentca05578fc80f4253ed19f4c4128a4cbd5b83f0b5 (diff)
downloadqemu-43610f3184f846da948e8ab9dbc0c5de1e9bde79.zip
qemu-43610f3184f846da948e8ab9dbc0c5de1e9bde79.tar.gz
qemu-43610f3184f846da948e8ab9dbc0c5de1e9bde79.tar.bz2
cpus: Build cpu_exec_[un]realizefn() methods once
Now that cpu_exec_realizefn() and cpu_exec_unrealizefn() methods don't use any target specific definition anymore, we can move them to cpu-common.c to be able to build them once. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20250123234415.59850-21-philmd@linaro.org>
-rw-r--r--cpu-target.c29
-rw-r--r--hw/core/cpu-common.c26
2 files changed, 26 insertions, 29 deletions
diff --git a/cpu-target.c b/cpu-target.c
index bc9c537..cae7737 100644
--- a/cpu-target.c
+++ b/cpu-target.c
@@ -25,38 +25,9 @@
#include "system/cpus.h"
#include "exec/tswap.h"
#include "exec/replay-core.h"
-#include "exec/cpu-common.h"
#include "exec/log.h"
#include "accel/accel-cpu-target.h"
#include "trace/trace-root.h"
-#include "qemu/accel.h"
-#include "hw/core/cpu.h"
-
-bool cpu_exec_realizefn(CPUState *cpu, Error **errp)
-{
- if (!accel_cpu_common_realize(cpu, errp)) {
- return false;
- }
-
- /* Wait until cpu initialization complete before exposing cpu. */
- cpu_list_add(cpu);
-
- cpu_vmstate_register(cpu);
-
- return true;
-}
-
-void cpu_exec_unrealizefn(CPUState *cpu)
-{
- cpu_vmstate_unregister(cpu);
-
- cpu_list_remove(cpu);
- /*
- * Now that the vCPU has been removed from the RCU list, we can call
- * accel_cpu_common_unrealize, which may free fields using call_rcu.
- */
- accel_cpu_common_unrealize(cpu);
-}
char *cpu_model_from_type(const char *typename)
{
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
index d5cd227..5671d8d 100644
--- a/hw/core/cpu-common.c
+++ b/hw/core/cpu-common.c
@@ -193,6 +193,20 @@ static void cpu_common_parse_features(const char *typename, char *features,
}
}
+bool cpu_exec_realizefn(CPUState *cpu, Error **errp)
+{
+ if (!accel_cpu_common_realize(cpu, errp)) {
+ return false;
+ }
+
+ /* Wait until cpu initialization complete before exposing cpu. */
+ cpu_list_add(cpu);
+
+ cpu_vmstate_register(cpu);
+
+ return true;
+}
+
static void cpu_common_realizefn(DeviceState *dev, Error **errp)
{
CPUState *cpu = CPU(dev);
@@ -234,6 +248,18 @@ static void cpu_common_unrealizefn(DeviceState *dev)
cpu_exec_unrealizefn(cpu);
}
+void cpu_exec_unrealizefn(CPUState *cpu)
+{
+ cpu_vmstate_unregister(cpu);
+
+ cpu_list_remove(cpu);
+ /*
+ * Now that the vCPU has been removed from the RCU list, we can call
+ * accel_cpu_common_unrealize, which may free fields using call_rcu.
+ */
+ accel_cpu_common_unrealize(cpu);
+}
+
static void cpu_common_initfn(Object *obj)
{
CPUState *cpu = CPU(obj);