From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36976) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4swO-0003EJ-0N for qemu-devel@nongnu.org; Tue, 16 Jun 2015 11:38:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z4swJ-0002xS-5S for qemu-devel@nongnu.org; Tue, 16 Jun 2015 11:38:19 -0400 Received: from mail-yk0-f170.google.com ([209.85.160.170]:33239) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z4swJ-0002x1-15 for qemu-devel@nongnu.org; Tue, 16 Jun 2015 11:38:15 -0400 Received: by ykfr66 with SMTP id r66so16603642ykf.0 for ; Tue, 16 Jun 2015 08:38:14 -0700 (PDT) MIME-Version: 1.0 Sender: peter.crosthwaite@petalogix.com In-Reply-To: References: <52628688d4f3b34cefd0ebab12dd0f1ec8fe3618.1434432813.git.crosthwaite.peter@gmail.com> Date: Tue, 16 Jun 2015 08:38:14 -0700 Message-ID: From: Peter Crosthwaite Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [PATCH v2 4/4] microblaze: boot: Use cpu_set_pc List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: "Edgar E. Iglesias" , Peter Crosthwaite , QEMU Developers , =?UTF-8?Q?Andreas_F=C3=A4rber?= , Peter Crosthwaite On Tue, Jun 16, 2015 at 4:33 AM, Peter Maydell wrote: > On 16 June 2015 at 06:46, Peter Crosthwaite 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 >> --- >> 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 >