|
|
1.1 root 1: /*
2: * Dummy board with just RAM and CPU for use as an ISS.
3: *
4: * Copyright (c) 2007 CodeSourcery.
5: *
1.1.1.6 root 6: * This code is licensed under the GPL
1.1 root 7: */
8:
9: #include "hw.h"
10: #include "boards.h"
1.1.1.4 root 11: #include "loader.h"
12: #include "elf.h"
1.1.1.7 root 13: #include "exec-memory.h"
1.1 root 14:
15: #define KERNEL_LOAD_ADDR 0x10000
16:
17: /* Board init. */
18:
1.1.1.3 root 19: static void dummy_m68k_init(ram_addr_t ram_size,
1.1.1.2 root 20: const char *boot_device,
1.1 root 21: const char *kernel_filename, const char *kernel_cmdline,
22: const char *initrd_filename, const char *cpu_model)
23: {
1.1.1.8 ! root 24: CPUM68KState *env;
1.1.1.7 root 25: MemoryRegion *address_space_mem = get_system_memory();
26: MemoryRegion *ram = g_new(MemoryRegion, 1);
1.1 root 27: int kernel_size;
28: uint64_t elf_entry;
1.1.1.4 root 29: target_phys_addr_t entry;
1.1 root 30:
31: if (!cpu_model)
32: cpu_model = "cfv4e";
33: env = cpu_init(cpu_model);
34: if (!env) {
35: fprintf(stderr, "Unable to find m68k CPU definition\n");
36: exit(1);
37: }
38:
39: /* Initialize CPU registers. */
40: env->vbr = 0;
41:
42: /* RAM at address zero */
1.1.1.8 ! root 43: memory_region_init_ram(ram, "dummy_m68k.ram", ram_size);
! 44: vmstate_register_ram_global(ram);
1.1.1.7 root 45: memory_region_add_subregion(address_space_mem, 0, ram);
1.1 root 46:
47: /* Load kernel. */
48: if (kernel_filename) {
1.1.1.5 root 49: kernel_size = load_elf(kernel_filename, NULL, NULL, &elf_entry,
50: NULL, NULL, 1, ELF_MACHINE, 0);
1.1 root 51: entry = elf_entry;
52: if (kernel_size < 0) {
1.1.1.2 root 53: kernel_size = load_uimage(kernel_filename, &entry, NULL, NULL);
1.1 root 54: }
55: if (kernel_size < 0) {
1.1.1.3 root 56: kernel_size = load_image_targphys(kernel_filename,
57: KERNEL_LOAD_ADDR,
58: ram_size - KERNEL_LOAD_ADDR);
1.1 root 59: entry = KERNEL_LOAD_ADDR;
60: }
61: if (kernel_size < 0) {
62: fprintf(stderr, "qemu: could not load kernel '%s'\n",
63: kernel_filename);
64: exit(1);
65: }
66: } else {
67: entry = 0;
68: }
69: env->pc = entry;
70: }
71:
1.1.1.3 root 72: static QEMUMachine dummy_m68k_machine = {
1.1.1.2 root 73: .name = "dummy",
74: .desc = "Dummy board",
75: .init = dummy_m68k_init,
1.1 root 76: };
1.1.1.3 root 77:
78: static void dummy_m68k_machine_init(void)
79: {
80: qemu_register_machine(&dummy_m68k_machine);
81: }
82:
83: machine_init(dummy_m68k_machine_init);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.