diff mbox

[qom,v3,3/4] arm: boot: Use cpu_set_pc()

Message ID 558AF554.8040203@suse.de
State New
Headers show

Commit Message

Andreas Färber June 24, 2015, 6:22 p.m. UTC
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.maydell@linaro.org>
> Reviewed-by: Andreas Färber <afaerber@suse.de>
> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@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?

 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

Comments

Peter Crosthwaite June 24, 2015, 6:26 p.m. UTC | #1
On Wed, Jun 24, 2015 at 11:22 AM, Andreas Färber <afaerber@suse.de> wrote:
> 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.maydell@linaro.org>
>> Reviewed-by: Andreas Färber <afaerber@suse.de>
>> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@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?

No objection from me. Ack to the squash or can be respun.

Regards,
Peter

>
> --- 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)
>
Peter Maydell June 24, 2015, 7:13 p.m. UTC | #2
On 24 June 2015 at 19:22, Andreas Färber <afaerber@suse.de> wrote:
> 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.maydell@linaro.org>
>> Reviewed-by: Andreas Färber <afaerber@suse.de>
>> Signed-off-by: Peter Crosthwaite <crosthwaite.peter@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?

Fine with me; you can keep my r-b tag.

-- PMM
diff mbox

Patch

--- 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);
 }