From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50770) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SSH2W-0001gY-7f for qemu-devel@nongnu.org; Wed, 09 May 2012 20:15:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SSH2T-0005hy-SU for qemu-devel@nongnu.org; Wed, 09 May 2012 20:15:27 -0400 Received: from cantor2.suse.de ([195.135.220.15]:35629 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SSH2T-0005gu-I4 for qemu-devel@nongnu.org; Wed, 09 May 2012 20:15:25 -0400 Received: from relay2.suse.de (unknown [195.135.220.254]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id 7B3EF978B8 for ; Thu, 10 May 2012 02:15:24 +0200 (CEST) From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Thu, 10 May 2012 02:14:37 +0200 Message-Id: <1336608892-30501-60-git-send-email-afaerber@suse.de> In-Reply-To: <1336608892-30501-1-git-send-email-afaerber@suse.de> References: <1336608892-30501-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH next v2 59/74] microblaze_boot: Pass MicroBlazeCPU to microblaze_load_kernel() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= Allows us to use cpu_reset() in place of cpu_state_reset() in main_cpu_reset(). Also pass it through to its reset callbacks, while at it. Signed-off-by: Andreas F=C3=A4rber --- hw/microblaze_boot.c | 16 ++++++++-------- hw/microblaze_boot.h | 4 ++-- hw/petalogix_ml605_mmu.c | 6 ++++-- hw/petalogix_s3adsp1800_mmu.c | 6 ++++-- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/hw/microblaze_boot.c b/hw/microblaze_boot.c index b4fbb10..1030e9c 100644 --- a/hw/microblaze_boot.c +++ b/hw/microblaze_boot.c @@ -35,7 +35,7 @@ =20 static struct { - void (*machine_cpu_reset)(CPUMBState *); + void (*machine_cpu_reset)(MicroBlazeCPU *); uint32_t bootstrap_pc; uint32_t cmdline; uint32_t fdt; @@ -43,14 +43,15 @@ static struct =20 static void main_cpu_reset(void *opaque) { - CPUMBState *env =3D opaque; + MicroBlazeCPU *cpu =3D opaque; + CPUMBState *env =3D &cpu->env; =20 - cpu_state_reset(env); + cpu_reset(CPU(cpu)); env->regs[5] =3D boot_info.cmdline; env->regs[7] =3D boot_info.fdt; env->sregs[SR_PC] =3D boot_info.bootstrap_pc; if (boot_info.machine_cpu_reset) { - boot_info.machine_cpu_reset(env); + boot_info.machine_cpu_reset(cpu); } } =20 @@ -99,11 +100,10 @@ static uint64_t translate_kernel_address(void *opaqu= e, uint64_t addr) return addr - 0x30000000LL; } =20 -void microblaze_load_kernel(CPUMBState *env, target_phys_addr_t ddr_base= , +void microblaze_load_kernel(MicroBlazeCPU *cpu, target_phys_addr_t ddr_b= ase, uint32_t ramsize, const char *dtb_filename, - void (*machine_cpu_reset)(CPUMBState *= )) + void (*machine_cpu_reset)(MicroBlazeCPU *)) { - QemuOpts *machine_opts; const char *kernel_filename =3D NULL; const char *kernel_cmdline =3D NULL; @@ -122,7 +122,7 @@ void microblaze_load_kernel(CPUMBState *env, target_p= hys_addr_t ddr_base, } =20 boot_info.machine_cpu_reset =3D machine_cpu_reset; - qemu_register_reset(main_cpu_reset, env); + qemu_register_reset(main_cpu_reset, cpu); =20 if (kernel_filename) { int kernel_size; diff --git a/hw/microblaze_boot.h b/hw/microblaze_boot.h index bf9d136..c9a3064 100644 --- a/hw/microblaze_boot.h +++ b/hw/microblaze_boot.h @@ -3,8 +3,8 @@ =20 #include "hw.h" =20 -void microblaze_load_kernel(CPUMBState *env, target_phys_addr_t ddr_base= , +void microblaze_load_kernel(MicroBlazeCPU *cpu, target_phys_addr_t ddr_b= ase, uint32_t ramsize, const char *dtb_filename, - void (*machine_cpu_reset)(CPUMBState *= )); + void (*machine_cpu_reset)(MicroBlazeCPU *)); =20 #endif /* __MICROBLAZE_BOOT __ */ diff --git a/hw/petalogix_ml605_mmu.c b/hw/petalogix_ml605_mmu.c index 6819241..bff63e3 100644 --- a/hw/petalogix_ml605_mmu.c +++ b/hw/petalogix_ml605_mmu.c @@ -54,8 +54,10 @@ #define AXIENET_BASEADDR 0x82780000 #define AXIDMA_BASEADDR 0x84600000 =20 -static void machine_cpu_reset(CPUMBState *env) +static void machine_cpu_reset(MicroBlazeCPU *cpu) { + CPUMBState *env =3D &cpu->env; + env->pvr.regs[10] =3D 0x0e000000; /* virtex 6 */ /* setup pvr to match kernel setting */ env->pvr.regs[5] |=3D PVR5_DCACHE_WRITEBACK_MASK; @@ -133,7 +135,7 @@ petalogix_ml605_init(ram_addr_t ram_size, irq[1], irq[0], 100 * 1000000); } =20 - microblaze_load_kernel(env, ddr_base, ram_size, BINARY_DEVICE_TREE_F= ILE, + microblaze_load_kernel(cpu, ddr_base, ram_size, BINARY_DEVICE_TREE_F= ILE, machine_cpu_= reset); =20 } diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.= c index 7ff3cd5..f41c559 100644 --- a/hw/petalogix_s3adsp1800_mmu.c +++ b/hw/petalogix_s3adsp1800_mmu.c @@ -49,8 +49,10 @@ #define UARTLITE_BASEADDR 0x84000000 #define ETHLITE_BASEADDR 0x81000000 =20 -static void machine_cpu_reset(CPUMBState *env) +static void machine_cpu_reset(MicroBlazeCPU *cpu) { + CPUMBState *env =3D &cpu->env; + env->pvr.regs[10] =3D 0x0c000000; /* spartan 3a dsp family. */ } =20 @@ -107,7 +109,7 @@ petalogix_s3adsp1800_init(ram_addr_t ram_size, xilinx_timer_create(TIMER_BASEADDR, irq[0], 2, 62 * 1000000); xilinx_ethlite_create(&nd_table[0], ETHLITE_BASEADDR, irq[1], 0, 0); =20 - microblaze_load_kernel(env, ddr_base, ram_size, + microblaze_load_kernel(cpu, ddr_base, ram_size, BINARY_DEVICE_TREE_FILE, machine_cpu_reset); } =20 --=20 1.7.7