[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 4/4] microblaze: boot: Use cpu_set_pc
From: |
Peter Crosthwaite |
Subject: |
Re: [Qemu-devel] [PATCH v2 4/4] microblaze: boot: Use cpu_set_pc |
Date: |
Tue, 16 Jun 2015 08:38:14 -0700 |
On Tue, Jun 16, 2015 at 4:33 AM, Peter Maydell <address@hidden> wrote:
> On 16 June 2015 at 06:46, Peter Crosthwaite <address@hidden> wrote:
>> Use cpu_set_pc for setting program counters when bootloading. This
>> removes an instance of system level code having to reach into the CPU
>> env.
>>
>> Signed-off-by: Peter Crosthwaite <address@hidden>
>> ---
>> hw/microblaze/boot.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c
>> index 4c44317..ec68479 100644
>> --- a/hw/microblaze/boot.c
>> +++ b/hw/microblaze/boot.c
>> @@ -54,7 +54,7 @@ static void main_cpu_reset(void *opaque)
>> env->regs[5] = boot_info.cmdline;
>> env->regs[6] = boot_info.initrd_start;
>> env->regs[7] = boot_info.fdt;
>> - env->sregs[SR_PC] = boot_info.bootstrap_pc;
>> + cpu_set_pc(CPU(cpu), boot_info.bootstrap_pc, &error_abort);
>
> Well, it sort of removes an instance of reaching into the CPU
> env, but there's all those other ones in plain sight just above.
> Is there much point in setting SR_PC indirectly if we don't
> have a mechanism for setting the other regs indirectly?
>
Yes. Needs more patches :). I'm starting with the easy stuff, and I am
actually more interested in getting rid of the SR_PC macro usage at
this stage. ARMs solution to this is the machine code bootloader. That
would be one way. But what I want to propose was that we add a virtual
method to CPUs that sets these offsets that bootloaders can call. This
brings us closer to one bootloader that can do it all.
Regards,
Peter
> -- PMM
>
- [Qemu-devel] [PATCH v2 1/4] qom: cpu: Add wrapper to the set-pc hook, (continued)