Revision 427bd8d6 hw/pc.c
b/hw/pc.c | ||
---|---|---|
810 | 810 |
} |
811 | 811 |
} |
812 | 812 |
|
813 |
static void bsp_cpu_reset(void *opaque)
|
|
813 |
static void pc_cpu_reset(void *opaque)
|
|
814 | 814 |
{ |
815 | 815 |
CPUState *env = opaque; |
816 | 816 |
|
817 | 817 |
cpu_reset(env); |
818 |
env->halted = 0; |
|
819 |
} |
|
820 |
|
|
821 |
static void ap_cpu_reset(void *opaque) |
|
822 |
{ |
|
823 |
CPUState *env = opaque; |
|
824 |
|
|
825 |
cpu_reset(env); |
|
826 |
env->halted = 1; |
|
818 |
env->halted = !cpu_is_bsp(env); |
|
827 | 819 |
} |
828 | 820 |
|
829 | 821 |
static CPUState *pc_new_cpu(const char *cpu_model) |
... | ... | |
837 | 829 |
} |
838 | 830 |
if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { |
839 | 831 |
env->cpuid_apic_id = env->cpu_index; |
840 |
/* APIC reset callback resets cpu */ |
|
841 | 832 |
env->apic_state = apic_init(env, env->cpuid_apic_id); |
842 | 833 |
} |
843 |
if (cpu_is_bsp(env)) { |
|
844 |
qemu_register_reset(bsp_cpu_reset, env); |
|
845 |
env->halted = 0; |
|
846 |
} else { |
|
847 |
qemu_register_reset(ap_cpu_reset, env); |
|
848 |
env->halted = 1; |
|
849 |
} |
|
834 |
qemu_register_reset(pc_cpu_reset, env); |
|
835 |
pc_cpu_reset(env); |
|
850 | 836 |
return env; |
851 | 837 |
} |
852 | 838 |
|
Also available in: Unified diff