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) */ | ... | ... |