mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-15 07:22:46 +00:00
cpu: Convert to DEFINE_PROP_LINK
Signed-off-by: Fam Zheng <famz@redhat.com> Message-Id: <20170714021509.23681-20-famz@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e4934bb39c
commit
c7e002c55a
27
exec.c
27
exec.c
|
@ -27,6 +27,7 @@
|
||||||
#include "exec/target_page.h"
|
#include "exec/target_page.h"
|
||||||
#include "tcg.h"
|
#include "tcg.h"
|
||||||
#include "hw/qdev-core.h"
|
#include "hw/qdev-core.h"
|
||||||
|
#include "hw/qdev-properties.h"
|
||||||
#if !defined(CONFIG_USER_ONLY)
|
#if !defined(CONFIG_USER_ONLY)
|
||||||
#include "hw/boards.h"
|
#include "hw/boards.h"
|
||||||
#include "hw/xen/xen.h"
|
#include "hw/xen/xen.h"
|
||||||
|
@ -737,6 +738,20 @@ void cpu_exec_unrealizefn(CPUState *cpu)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Property cpu_common_props[] = {
|
||||||
|
#ifndef CONFIG_USER_ONLY
|
||||||
|
/* Create a memory property for softmmu CPU object,
|
||||||
|
* so users can wire up its memory. (This can't go in qom/cpu.c
|
||||||
|
* because that file is compiled only once for both user-mode
|
||||||
|
* and system builds.) The default if no link is set up is to use
|
||||||
|
* the system address space.
|
||||||
|
*/
|
||||||
|
DEFINE_PROP_LINK("memory", CPUState, memory, TYPE_MEMORY_REGION,
|
||||||
|
MemoryRegion *),
|
||||||
|
#endif
|
||||||
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
|
};
|
||||||
|
|
||||||
void cpu_exec_initfn(CPUState *cpu)
|
void cpu_exec_initfn(CPUState *cpu)
|
||||||
{
|
{
|
||||||
cpu->as = NULL;
|
cpu->as = NULL;
|
||||||
|
@ -744,18 +759,6 @@ void cpu_exec_initfn(CPUState *cpu)
|
||||||
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
cpu->thread_id = qemu_get_thread_id();
|
cpu->thread_id = qemu_get_thread_id();
|
||||||
|
|
||||||
/* This is a softmmu CPU object, so create a property for it
|
|
||||||
* so users can wire up its memory. (This can't go in qom/cpu.c
|
|
||||||
* because that file is compiled only once for both user-mode
|
|
||||||
* and system builds.) The default if no link is set up is to use
|
|
||||||
* the system address space.
|
|
||||||
*/
|
|
||||||
object_property_add_link(OBJECT(cpu), "memory", TYPE_MEMORY_REGION,
|
|
||||||
(Object **)&cpu->memory,
|
|
||||||
qdev_prop_allow_set_link_before_realize,
|
|
||||||
OBJ_PROP_LINK_UNREF_ON_RELEASE,
|
|
||||||
&error_abort);
|
|
||||||
cpu->memory = system_memory;
|
cpu->memory = system_memory;
|
||||||
object_ref(OBJECT(cpu->memory));
|
object_ref(OBJECT(cpu->memory));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1013,6 +1013,7 @@ AddressSpace *cpu_get_address_space(CPUState *cpu, int asidx);
|
||||||
|
|
||||||
void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...)
|
void QEMU_NORETURN cpu_abort(CPUState *cpu, const char *fmt, ...)
|
||||||
GCC_FMT_ATTR(2, 3);
|
GCC_FMT_ATTR(2, 3);
|
||||||
|
extern Property cpu_common_props[];
|
||||||
void cpu_exec_initfn(CPUState *cpu);
|
void cpu_exec_initfn(CPUState *cpu);
|
||||||
void cpu_exec_realizefn(CPUState *cpu, Error **errp);
|
void cpu_exec_realizefn(CPUState *cpu, Error **errp);
|
||||||
void cpu_exec_unrealizefn(CPUState *cpu);
|
void cpu_exec_unrealizefn(CPUState *cpu);
|
||||||
|
|
|
@ -458,6 +458,7 @@ static void cpu_class_init(ObjectClass *klass, void *data)
|
||||||
set_bit(DEVICE_CATEGORY_CPU, dc->categories);
|
set_bit(DEVICE_CATEGORY_CPU, dc->categories);
|
||||||
dc->realize = cpu_common_realizefn;
|
dc->realize = cpu_common_realizefn;
|
||||||
dc->unrealize = cpu_common_unrealizefn;
|
dc->unrealize = cpu_common_unrealizefn;
|
||||||
|
dc->props = cpu_common_props;
|
||||||
/*
|
/*
|
||||||
* Reason: CPUs still need special care by board code: wiring up
|
* Reason: CPUs still need special care by board code: wiring up
|
||||||
* IRQs, adding reset handlers, halting non-first CPUs, ...
|
* IRQs, adding reset handlers, halting non-first CPUs, ...
|
||||||
|
|
Loading…
Reference in a new issue