--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/qemu-symbian-svp/hw/dummy_ppc.c Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,76 @@
+/*
+ * Dummy board with just RAM and CPU for use as an ISS.
+ *
+ * Copyright (c) 2007 CodeSourcery.
+ *
+ * This code is licenced under the GPL
+ */
+
+#include "hw.h"
+#include "sysemu.h"
+#include "boards.h"
+#include "ppc.h"
+
+/* Board init. */
+
+static void dummy_ppc_init(ram_addr_t ram_size, int vga_ram_size,
+ const char *boot_device, DisplayState *ds,
+ const char *kernel_filename, const char *kernel_cmdline,
+ const char *initrd_filename, const char *cpu_model)
+{
+ CPUState *env;
+ int kernel_size;
+ uint64_t elf_entry;
+ target_ulong entry;
+
+ if (!cpu_model)
+ cpu_model = "default";
+ env = cpu_init(cpu_model);
+ if (!env) {
+ fprintf(stderr, "Unable to find ppc CPU definition\n");
+ exit(1);
+ }
+
+ cpu_ppc_tb_init(env, 100UL * 1000UL * 1000UL);
+ /* RAM at address zero */
+ cpu_register_physical_memory(0x10000000, ram_size,
+ qemu_ram_alloc(ram_size) | IO_MEM_RAM);
+
+ /* Load kernel. */
+ if (kernel_filename) {
+ kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL);
+ entry = elf_entry;
+ if (kernel_size < 0) {
+ kernel_size = load_uimage(kernel_filename, &entry, NULL, NULL);
+ }
+ if (kernel_size < 0) {
+ kernel_size = load_image(kernel_filename, phys_ram_base);
+ entry = 0;
+ }
+ if (kernel_size < 0) {
+ fprintf(stderr, "qemu: could not load kernel '%s'\n",
+ kernel_filename);
+ exit(1);
+ }
+ } else {
+ entry = 0;
+ }
+ env->nip = entry;
+ if (semihosting_enabled) {
+ /* Setup initial stack. */
+ target_ulong *p;
+ p = (target_ulong *)(phys_ram_base + ram_size);
+ *(--p) = 0;
+ *(--p) = 0;
+ env->gpr[1] = 0x10000000 + ram_size - 2 * sizeof(target_ulong);
+ /* Enable FPU. */
+ env->msr |= (1 << MSR_FP);
+ }
+}
+
+QEMUMachine dummy_ppc_machine = {
+ .name = "dummy",
+ .desc = "Dummy board",
+ .init = dummy_ppc_init,
+ .max_cpus = 1
+};