[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 02/26] PPC: Bamboo: Register CPU reset
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 02/26] PPC: Bamboo: Register CPU reset |
Date: |
Sat, 21 Jan 2012 05:18:47 +0100 |
To be able to support CPU reset, we need to put all register initialization
and initial state into a CPU reset hook instead of a function that is only
called once on bootup.
This is a preparation step for the initial TLB setting code and brings bamboo
more in line with what e500 and virtex already do.
Signed-off-by: Alexander Graf <address@hidden>
---
hw/ppc440_bamboo.c | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
index b734e3a..f82d587 100644
--- a/hw/ppc440_bamboo.c
+++ b/hw/ppc440_bamboo.c
@@ -32,6 +32,8 @@
#define FDT_ADDR 0x1800000
#define RAMDISK_ADDR 0x1900000
+static target_phys_addr_t entry;
+
static int bamboo_load_device_tree(target_phys_addr_t addr,
uint32_t ramsize,
target_phys_addr_t initrd_base,
@@ -101,6 +103,16 @@ out:
return ret;
}
+static void main_cpu_reset(void *opaque)
+{
+ CPUState *env = opaque;
+
+ cpu_reset(env);
+ env->gpr[1] = (16<<20) - 8;
+ env->gpr[3] = FDT_ADDR;
+ env->nip = entry;
+}
+
static void bamboo_init(ram_addr_t ram_size,
const char *boot_device,
const char *kernel_filename,
@@ -114,7 +126,6 @@ static void bamboo_init(ram_addr_t ram_size,
CPUState *env;
uint64_t elf_entry;
uint64_t elf_lowaddr;
- target_phys_addr_t entry = 0;
target_phys_addr_t loadaddr = 0;
target_long initrd_size = 0;
int success;
@@ -123,6 +134,7 @@ static void bamboo_init(ram_addr_t ram_size,
/* Setup CPU. */
env = ppc440ep_init(address_space_mem, &ram_size, &pcibus,
pci_irq_nrs, 1, cpu_model);
+ qemu_register_reset(main_cpu_reset, env);
if (pcibus) {
/* Register network interfaces. */
@@ -169,11 +181,6 @@ static void bamboo_init(ram_addr_t ram_size,
fprintf(stderr, "couldn't load device tree\n");
exit(1);
}
-
- /* Set initial guest state. */
- env->gpr[1] = (16<<20) - 8;
- env->gpr[3] = FDT_ADDR;
- env->nip = entry;
/* XXX we currently depend on KVM to create some initial TLB entries.
*/
}
--
1.6.0.2
- [Qemu-ppc] [PULL 00/26] ppc patch queue 2012-01-21, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 06/26] PPC: 440: Default to 440EP CPU, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 12/26] PPC: Bamboo: Integrate SoC instatiation, use qdev for PCI, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 07/26] PPC: Enable 440EP CPU target, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 16/26] Fix dirty logging with 32-bit qemu & 64-bit guests, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 14/26] virtio: change memcpy to guest reads, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 02/26] PPC: Bamboo: Register CPU reset,
Alexander Graf <=
- [Qemu-ppc] [PATCH 26/26] grackle_pci: Clean up qdev names, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 11/26] PPC: Bamboo: fold ppc440.c and ppc440_bamboo.c into a single file, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 09/26] PPC: bamboo: fix whitespace, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 13/26] virtio-pci: Fix endianness of virtio config, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 05/26] PPC: Bamboo: recompile device tree, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 04/26] PPC: 440: Ignore invalid PCI IRQs, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 01/26] PPC: 440EP: Initialize timer, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 18/26] Correct types in bmdma_addr_{read,write}, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 03/26] PPC: Bamboo: Set initial TLB entry, Alexander Graf, 2012/01/20
- [Qemu-ppc] [PATCH 10/26] PPC: 4xx: Qdevify the 440 PCI host controller, Alexander Graf, 2012/01/20