~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to hw/dummy_m68k.c

  • Committer: ths
  • Date: 2007-10-08 12:45:38 UTC
  • Revision ID: git-v1:450d4ff553af32fc9d83fef20d7106b0151526b8
CRIS disassembler, originally from binutils, by Edgar E. Iglesias.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3356 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
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"
12
 
 
13
 
#define KERNEL_LOAD_ADDR 0x10000
14
 
 
15
 
/* Board init.  */
16
 
 
17
 
static void dummy_m68k_init(ram_addr_t 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
 
    /* Initialize CPU registers.  */
36
 
    env->vbr = 0;
37
 
 
38
 
    /* RAM at address zero */
39
 
    cpu_register_physical_memory(0, ram_size,
40
 
        qemu_ram_alloc(ram_size) | IO_MEM_RAM);
41
 
 
42
 
    /* Load kernel.  */
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
 
    .name = "dummy",
67
 
    .desc = "Dummy board",
68
 
    .init = dummy_m68k_init,
69
 
};