Revision 6ed221b6 hw/realview.c
b/hw/realview.c | ||
---|---|---|
104 | 104 |
.smp_loader_start = SMP_BOOT_ADDR, |
105 | 105 |
}; |
106 | 106 |
|
107 |
static void secondary_cpu_reset(void *opaque) |
|
108 |
{ |
|
109 |
CPUState *env = opaque; |
|
110 |
|
|
111 |
cpu_reset(env); |
|
112 |
/* Set entry point for secondary CPUs. This assumes we're using |
|
113 |
the init code from arm_boot.c. Real hardware resets all CPUs |
|
114 |
the same. */ |
|
115 |
env->regs[15] = SMP_BOOT_ADDR; |
|
116 |
} |
|
117 |
|
|
118 | 107 |
/* The following two lists must be consistent. */ |
119 | 108 |
enum realview_board_type { |
120 | 109 |
BOARD_EB, |
... | ... | |
177 | 166 |
} |
178 | 167 |
irqp = arm_pic_init_cpu(env); |
179 | 168 |
cpu_irq[n] = irqp[ARM_PIC_CPU_IRQ]; |
180 |
if (n > 0) { |
|
181 |
qemu_register_reset(secondary_cpu_reset, env); |
|
182 |
} |
|
183 | 169 |
} |
184 | 170 |
if (arm_feature(env, ARM_FEATURE_V7)) { |
185 | 171 |
if (is_mpcore) { |
Also available in: Unified diff