|
|
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"
1.1.1.4 ! root 12: #include "loader.h"
! 13: #include "elf.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: {
24: CPUState *env;
25: int kernel_size;
26: uint64_t elf_entry;
1.1.1.4 ! root 27: target_phys_addr_t entry;
1.1 root 28:
29: if (!cpu_model)
30: cpu_model = "cfv4e";
31: env = cpu_init(cpu_model);
32: if (!env) {
33: fprintf(stderr, "Unable to find m68k CPU definition\n");
34: exit(1);
35: }
36:
37: /* Initialize CPU registers. */
38: env->vbr = 0;
39:
40: /* RAM at address zero */
41: cpu_register_physical_memory(0, ram_size,
42: qemu_ram_alloc(ram_size) | IO_MEM_RAM);
43:
44: /* Load kernel. */
45: if (kernel_filename) {
1.1.1.4 ! root 46: kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL,
! 47: 1, ELF_MACHINE, 0);
1.1 root 48: entry = elf_entry;
49: if (kernel_size < 0) {
1.1.1.2 root 50: kernel_size = load_uimage(kernel_filename, &entry, NULL, NULL);
1.1 root 51: }
52: if (kernel_size < 0) {
1.1.1.3 root 53: kernel_size = load_image_targphys(kernel_filename,
54: KERNEL_LOAD_ADDR,
55: ram_size - KERNEL_LOAD_ADDR);
1.1 root 56: entry = KERNEL_LOAD_ADDR;
57: }
58: if (kernel_size < 0) {
59: fprintf(stderr, "qemu: could not load kernel '%s'\n",
60: kernel_filename);
61: exit(1);
62: }
63: } else {
64: entry = 0;
65: }
66: env->pc = entry;
67: }
68:
1.1.1.3 root 69: static QEMUMachine dummy_m68k_machine = {
1.1.1.2 root 70: .name = "dummy",
71: .desc = "Dummy board",
72: .init = dummy_m68k_init,
1.1 root 73: };
1.1.1.3 root 74:
75: static void dummy_m68k_machine_init(void)
76: {
77: qemu_register_machine(&dummy_m68k_machine);
78: }
79:
80: 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.