diff options
| author | Igor Mammedov | 2013-04-23 10:29:41 +0200 |
|---|---|---|
| committer | Andreas Färber | 2013-05-01 13:04:18 +0200 |
| commit | 997395d3888fcde6ce41535a8208d7aa919d824b (patch) | |
| tree | 5e6d2bd054bdb7b1f1914916f97dbdd06a7b3374 /target-i386 | |
| parent | pc: Update rtc_cmos on CPU hot-plug (diff) | |
| download | qemu-997395d3888fcde6ce41535a8208d7aa919d824b.tar.gz qemu-997395d3888fcde6ce41535a8208d7aa919d824b.tar.xz qemu-997395d3888fcde6ce41535a8208d7aa919d824b.zip | |
cpu: Introduce get_arch_id() method and override it for X86CPU
get_arch_id() adds possibility for generic code to get a guest-visible
CPU ID without accessing CPUArchState.
If derived classes don't override it, it will return cpu_index.
Override it on target-i386 in X86CPU to return the APIC ID.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: liguang <lig.fnst@cn.fujitsu.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
Diffstat (limited to 'target-i386')
| -rw-r--r-- | target-i386/cpu.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/target-i386/cpu.c b/target-i386/cpu.c index e2302d8b05..f34ba23dad 100644 --- a/target-i386/cpu.c +++ b/target-i386/cpu.c @@ -2272,6 +2272,14 @@ static void x86_cpu_initfn(Object *obj) } } +static int64_t x86_cpu_get_arch_id(CPUState *cs) +{ + X86CPU *cpu = X86_CPU(cs); + CPUX86State *env = &cpu->env; + + return env->cpuid_apic_id; +} + static void x86_cpu_common_class_init(ObjectClass *oc, void *data) { X86CPUClass *xcc = X86_CPU_CLASS(oc); @@ -2286,6 +2294,8 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) cc->do_interrupt = x86_cpu_do_interrupt; cpu_class_set_vmsd(cc, &vmstate_x86_cpu); + + cc->get_arch_id = x86_cpu_get_arch_id; } static const TypeInfo x86_cpu_type_info = { |
