|
|
1.1 ! root 1: /* ! 2: * Dummy board with just RAM and CPU for use as an ISS. ! 3: * ! 4: * Copyright (c) 2007 CodeSourcery. ! 5: * ! 6: * This code is licenced under the GPL ! 7: */ ! 8: ! 9: #include "hw.h" ! 10: #include "sysemu.h" ! 11: #include "boards.h" ! 12: ! 13: #define KERNEL_LOAD_ADDR 0x10000 ! 14: ! 15: /* Board init. */ ! 16: ! 17: static void dummy_m68k_init(int ram_size, int vga_ram_size, ! 18: const char *boot_device, DisplayState *ds, ! 19: const char *kernel_filename, const char *kernel_cmdline, ! 20: const char *initrd_filename, const char *cpu_model) ! 21: { ! 22: CPUState *env; ! 23: int kernel_size; ! 24: uint64_t elf_entry; ! 25: target_ulong entry; ! 26: ! 27: if (!cpu_model) ! 28: cpu_model = "cfv4e"; ! 29: env = cpu_init(cpu_model); ! 30: if (!env) { ! 31: fprintf(stderr, "Unable to find m68k CPU definition\n"); ! 32: exit(1); ! 33: } ! 34: ! 35: /* Initialize CPU registers. */ ! 36: env->vbr = 0; ! 37: ! 38: /* RAM at address zero */ ! 39: cpu_register_physical_memory(0, ram_size, ! 40: qemu_ram_alloc(ram_size) | IO_MEM_RAM); ! 41: ! 42: /* Load kernel. */ ! 43: if (kernel_filename) { ! 44: kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); ! 45: entry = elf_entry; ! 46: if (kernel_size < 0) { ! 47: kernel_size = load_uboot(kernel_filename, &entry, NULL); ! 48: } ! 49: if (kernel_size < 0) { ! 50: kernel_size = load_image(kernel_filename, ! 51: phys_ram_base + KERNEL_LOAD_ADDR); ! 52: entry = KERNEL_LOAD_ADDR; ! 53: } ! 54: if (kernel_size < 0) { ! 55: fprintf(stderr, "qemu: could not load kernel '%s'\n", ! 56: kernel_filename); ! 57: exit(1); ! 58: } ! 59: } else { ! 60: entry = 0; ! 61: } ! 62: env->pc = entry; ! 63: } ! 64: ! 65: QEMUMachine dummy_m68k_machine = { ! 66: "dummy", ! 67: "Dummy board", ! 68: dummy_m68k_init, ! 69: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.