1:
2:
3:
4:
5:
6:
7:
8:
9: #include "hw.h"
10: #include "sysemu.h"
11: #include "boards.h"
12:
13: #define KERNEL_LOAD_ADDR 0x10000
14:
15:
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:
36: env->vbr = 0;
37:
38:
39: cpu_register_physical_memory(0, ram_size,
40: qemu_ram_alloc(ram_size) | IO_MEM_RAM);
41:
42:
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: };