Am 24.06.2015 um 05:19 schrieb Peter Crosthwaite: > Use cpu_set_pc() across the board for setting program counters. This > removes instances of system level code having to reach into the CPU > env. > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> > Reviewed-by: Andreas Färber <afaer...@suse.de> > Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> > --- > Changed since v2: > Add () to fn names in commit msg > Drop error argument > Changed since v1: > Lease thumb masking in boot.c > --- > hw/arm/boot.c | 19 +++++++------------ > 1 file changed, 7 insertions(+), 12 deletions(-)
Any objection to avoiding repeated casts as follows? --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -168,9 +168,11 @@ static void default_write_secondary(ARMCPU *cpu, static void default_reset_secondary(ARMCPU *cpu, const struct arm_boot_info *info) { + CPUState *cs = CPU(cpu); + address_space_stl_notdirty(&address_space_memory, info->smp_bootreg_addr, 0, MEMTXATTRS_UNSPECIFIED, NULL); - cpu_set_pc(CPU(cpu), info->smp_loader_start); + cpu_set_pc(cs, info->smp_loader_start); } static inline bool have_dtb(const struct arm_boot_info *info) @@ -443,10 +445,11 @@ fail: static void do_cpu_reset(void *opaque) { ARMCPU *cpu = opaque; + CPUState *cs = CPU(cpu); CPUARMState *env = &cpu->env; const struct arm_boot_info *info = env->boot_info; - cpu_reset(CPU(cpu)); + cpu_reset(cs); if (info) { if (!info->is_linux) { /* Jump to the entry point. */ @@ -456,7 +459,7 @@ static void do_cpu_reset(void *opaque) env->thumb = info->entry & 1; entry &= 0xfffffffe; } - cpu_set_pc(CPU(cpu), entry); + cpu_set_pc(cs, entry); } else { /* If we are booting Linux then we need to check whether we are * booting into secure or non-secure state and adjust the state @@ -486,8 +489,8 @@ static void do_cpu_reset(void *opaque) } } - if (CPU(cpu) == first_cpu) { - cpu_set_pc(CPU(cpu), info->loader_start); + if (cs == first_cpu) { + cpu_set_pc(cs, info->loader_start); if (!have_dtb(info)) { if (old_param) { Regards, Andreas -- SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Dilip Upmanyu, Graham Norton; HRB 21284 (AG Nürnberg)