arm_boot: Pass ARMCPU to arm_boot_info::secondary_cpu_reset_hook()

Adapt highbank accordingly.

Signed-off-by: Andreas Färber <afaerber@suse.de>
Acked-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Andreas Färber 2012-05-14 01:05:40 +02:00
parent 9543b0cdd6
commit 5d309320e3
3 changed files with 8 additions and 4 deletions

View file

@ -52,7 +52,7 @@ struct arm_boot_info {
*/ */
void (*write_secondary_boot)(ARMCPU *cpu, void (*write_secondary_boot)(ARMCPU *cpu,
const struct arm_boot_info *info); const struct arm_boot_info *info);
void (*secondary_cpu_reset_hook)(CPUARMState *env, void (*secondary_cpu_reset_hook)(ARMCPU *cpu,
const struct arm_boot_info *info); const struct arm_boot_info *info);
/* Used internally by arm_boot.c */ /* Used internally by arm_boot.c */
int is_linux; int is_linux;

View file

@ -72,9 +72,11 @@ static void default_write_secondary(ARMCPU *cpu,
info->smp_loader_start); info->smp_loader_start);
} }
static void default_reset_secondary(CPUARMState *env, static void default_reset_secondary(ARMCPU *cpu,
const struct arm_boot_info *info) const struct arm_boot_info *info)
{ {
CPUARMState *env = &cpu->env;
stl_phys_notdirty(info->smp_bootreg_addr, 0); stl_phys_notdirty(info->smp_bootreg_addr, 0);
env->regs[15] = info->smp_loader_start; env->regs[15] = info->smp_loader_start;
} }
@ -295,7 +297,7 @@ static void do_cpu_reset(void *opaque)
} }
} }
} else { } else {
info->secondary_cpu_reset_hook(env, info); info->secondary_cpu_reset_hook(cpu, info);
} }
} }
} }

View file

@ -60,8 +60,10 @@ static void hb_write_secondary(ARMCPU *cpu, const struct arm_boot_info *info)
rom_add_blob_fixed("smpboot", smpboot, sizeof(smpboot), SMP_BOOT_ADDR); rom_add_blob_fixed("smpboot", smpboot, sizeof(smpboot), SMP_BOOT_ADDR);
} }
static void hb_reset_secondary(CPUARMState *env, const struct arm_boot_info *info) static void hb_reset_secondary(ARMCPU *cpu, const struct arm_boot_info *info)
{ {
CPUARMState *env = &cpu->env;
switch (info->nb_cpus) { switch (info->nb_cpus) {
case 4: case 4:
stl_phys_notdirty(SMP_BOOT_REG + 0x30, 0); stl_phys_notdirty(SMP_BOOT_REG + 0x30, 0);