Commit ca02f31955113212eb250a3c58c7ab26b1a2a8df
1 parent
8fc7cc58
Add dummy m68k board.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3567 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
71 additions
and
1 deletions
Makefile.target
... | ... | @@ -508,7 +508,7 @@ VL_OBJS+= sh_timer.o ptimer.o sh_serial.o sh_intc.o |
508 | 508 | endif |
509 | 509 | ifeq ($(TARGET_BASE_ARCH), m68k) |
510 | 510 | VL_OBJS+= an5206.o mcf5206.o ptimer.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o |
511 | -VL_OBJS+= m68k-semi.o | |
511 | +VL_OBJS+= m68k-semi.o dummy_m68k.o | |
512 | 512 | endif |
513 | 513 | ifdef CONFIG_GDBSTUB |
514 | 514 | VL_OBJS+=gdbstub.o | ... | ... |
hw/dummy_m68k.c
0 → 100644
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 "vl.h" | |
10 | + | |
11 | +#define KERNEL_LOAD_ADDR 0x10000 | |
12 | + | |
13 | +/* Board init. */ | |
14 | + | |
15 | +static void dummy_m68k_init(int ram_size, int vga_ram_size, int boot_device, | |
16 | + DisplayState *ds, const char **fd_filename, int snapshot, | |
17 | + const char *kernel_filename, const char *kernel_cmdline, | |
18 | + const char *initrd_filename, const char *cpu_model) | |
19 | +{ | |
20 | + CPUState *env; | |
21 | + int kernel_size; | |
22 | + uint64_t elf_entry; | |
23 | + target_ulong entry; | |
24 | + | |
25 | + env = cpu_init(); | |
26 | + if (!cpu_model) | |
27 | + cpu_model = "cfv4e"; | |
28 | + if (cpu_m68k_set_model(env, cpu_model)) { | |
29 | + cpu_abort(env, "Unable to find m68k CPU definition\n"); | |
30 | + } | |
31 | + | |
32 | + /* Initialize CPU registers. */ | |
33 | + env->vbr = 0; | |
34 | + | |
35 | + /* RAM at address zero */ | |
36 | + cpu_register_physical_memory(0, ram_size, | |
37 | + qemu_ram_alloc(ram_size) | IO_MEM_RAM); | |
38 | + | |
39 | + /* Load kernel. */ | |
40 | + if (kernel_filename) { | |
41 | + kernel_size = load_elf(kernel_filename, 0, &elf_entry, NULL, NULL); | |
42 | + entry = elf_entry; | |
43 | + if (kernel_size < 0) { | |
44 | + kernel_size = load_uboot(kernel_filename, &entry, NULL); | |
45 | + } | |
46 | + if (kernel_size < 0) { | |
47 | + kernel_size = load_image(kernel_filename, | |
48 | + phys_ram_base + KERNEL_LOAD_ADDR); | |
49 | + entry = KERNEL_LOAD_ADDR; | |
50 | + } | |
51 | + if (kernel_size < 0) { | |
52 | + fprintf(stderr, "qemu: could not load kernel '%s'\n", | |
53 | + kernel_filename); | |
54 | + exit(1); | |
55 | + } | |
56 | + } else { | |
57 | + entry = 0; | |
58 | + } | |
59 | + env->pc = entry; | |
60 | +} | |
61 | + | |
62 | +QEMUMachine dummy_m68k_machine = { | |
63 | + "dummy", | |
64 | + "Dummy board", | |
65 | + dummy_m68k_init, | |
66 | +}; | ... | ... |
vl.c
... | ... | @@ -7400,6 +7400,7 @@ void register_machines(void) |
7400 | 7400 | #elif defined(TARGET_M68K) |
7401 | 7401 | qemu_register_machine(&mcf5208evb_machine); |
7402 | 7402 | qemu_register_machine(&an5206_machine); |
7403 | + qemu_register_machine(&dummy_m68k_machine); | |
7403 | 7404 | #elif defined(TARGET_CRIS) |
7404 | 7405 | qemu_register_machine(&bareetraxfs_machine); |
7405 | 7406 | #else | ... | ... |
vl.h
... | ... | @@ -1719,6 +1719,9 @@ extern QEMUMachine an5206_machine; |
1719 | 1719 | /* mcf5208.c */ |
1720 | 1720 | extern QEMUMachine mcf5208evb_machine; |
1721 | 1721 | |
1722 | +/* dummy_m68k.c */ | |
1723 | +extern QEMUMachine dummy_m68k_machine; | |
1724 | + | |
1722 | 1725 | #include "gdbstub.h" |
1723 | 1726 | |
1724 | 1727 | #endif /* defined(QEMU_TOOL) */ | ... | ... |