xref: /qemu/hw/core/cpu-user.c (revision 5136598e2667f35ef3dc1d757616a266bd5eb3a2)
1e3a575f5SPhilippe Mathieu-Daudé /*
2e3a575f5SPhilippe Mathieu-Daudé  * QEMU CPU model (user specific)
3e3a575f5SPhilippe Mathieu-Daudé  *
4e3a575f5SPhilippe Mathieu-Daudé  * Copyright (c) Linaro, Ltd.
5e3a575f5SPhilippe Mathieu-Daudé  *
6e3a575f5SPhilippe Mathieu-Daudé  * SPDX-License-Identifier: GPL-2.0-or-later
7e3a575f5SPhilippe Mathieu-Daudé  */
8e3a575f5SPhilippe Mathieu-Daudé 
9e3a575f5SPhilippe Mathieu-Daudé #include "qemu/osdep.h"
10e3a575f5SPhilippe Mathieu-Daudé #include "hw/qdev-core.h"
11e3a575f5SPhilippe Mathieu-Daudé #include "hw/qdev-properties.h"
12e3a575f5SPhilippe Mathieu-Daudé #include "hw/core/cpu.h"
13ca05578fSPhilippe Mathieu-Daudé #include "migration/vmstate.h"
14e3a575f5SPhilippe Mathieu-Daudé 
15e3a575f5SPhilippe Mathieu-Daudé static const Property cpu_user_props[] = {
16e3a575f5SPhilippe Mathieu-Daudé     /*
17e3a575f5SPhilippe Mathieu-Daudé      * Create a property for the user-only object, so users can
18e3a575f5SPhilippe Mathieu-Daudé      * adjust prctl(PR_SET_UNALIGN) from the command-line.
19e3a575f5SPhilippe Mathieu-Daudé      * Has no effect if the target does not support the feature.
20e3a575f5SPhilippe Mathieu-Daudé      */
21e3a575f5SPhilippe Mathieu-Daudé     DEFINE_PROP_BOOL("prctl-unalign-sigbus", CPUState,
22e3a575f5SPhilippe Mathieu-Daudé                      prctl_unalign_sigbus, false),
23e3a575f5SPhilippe Mathieu-Daudé };
24e3a575f5SPhilippe Mathieu-Daudé 
cpu_class_init_props(DeviceClass * dc)25e3a575f5SPhilippe Mathieu-Daudé void cpu_class_init_props(DeviceClass *dc)
26e3a575f5SPhilippe Mathieu-Daudé {
27e3a575f5SPhilippe Mathieu-Daudé     device_class_set_props(dc, cpu_user_props);
28e3a575f5SPhilippe Mathieu-Daudé }
29a86cf967SPhilippe Mathieu-Daudé 
cpu_exec_class_post_init(CPUClass * cc)30*d0a4ccaeSPhilippe Mathieu-Daudé void cpu_exec_class_post_init(CPUClass *cc)
31*d0a4ccaeSPhilippe Mathieu-Daudé {
32*d0a4ccaeSPhilippe Mathieu-Daudé     /* nothing to do */
33*d0a4ccaeSPhilippe Mathieu-Daudé }
34*d0a4ccaeSPhilippe Mathieu-Daudé 
cpu_exec_initfn(CPUState * cpu)35a86cf967SPhilippe Mathieu-Daudé void cpu_exec_initfn(CPUState *cpu)
36a86cf967SPhilippe Mathieu-Daudé {
37a86cf967SPhilippe Mathieu-Daudé     /* nothing to do */
38a86cf967SPhilippe Mathieu-Daudé }
39ca05578fSPhilippe Mathieu-Daudé 
cpu_vmstate_register(CPUState * cpu)40ca05578fSPhilippe Mathieu-Daudé void cpu_vmstate_register(CPUState *cpu)
41ca05578fSPhilippe Mathieu-Daudé {
42ca05578fSPhilippe Mathieu-Daudé     assert(qdev_get_vmsd(DEVICE(cpu)) == NULL ||
43ca05578fSPhilippe Mathieu-Daudé            qdev_get_vmsd(DEVICE(cpu))->unmigratable);
44ca05578fSPhilippe Mathieu-Daudé }
45ca05578fSPhilippe Mathieu-Daudé 
cpu_vmstate_unregister(CPUState * cpu)46ca05578fSPhilippe Mathieu-Daudé void cpu_vmstate_unregister(CPUState *cpu)
47ca05578fSPhilippe Mathieu-Daudé {
48ca05578fSPhilippe Mathieu-Daudé     /* nothing to do */
49ca05578fSPhilippe Mathieu-Daudé }
50