spike.c (20b8016ed847ac751e508c38aa27a9f8ecb93ac8) spike.c (732612856a8948a6ba1148322651743aa963b51c)
1/*
2 * QEMU RISC-V Spike Board
3 *
4 * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu
5 * Copyright (c) 2017-2018 SiFive, Inc.
6 *
7 * This provides a RISC-V Board with the following devices:
8 *

--- 29 unchanged lines hidden (view full) ---

38#include "hw/char/riscv_htif.h"
39#include "hw/intc/sifive_clint.h"
40#include "chardev/char.h"
41#include "sysemu/arch_init.h"
42#include "sysemu/device_tree.h"
43#include "sysemu/qtest.h"
44#include "sysemu/sysemu.h"
45
1/*
2 * QEMU RISC-V Spike Board
3 *
4 * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu
5 * Copyright (c) 2017-2018 SiFive, Inc.
6 *
7 * This provides a RISC-V Board with the following devices:
8 *

--- 29 unchanged lines hidden (view full) ---

38#include "hw/char/riscv_htif.h"
39#include "hw/intc/sifive_clint.h"
40#include "chardev/char.h"
41#include "sysemu/arch_init.h"
42#include "sysemu/device_tree.h"
43#include "sysemu/qtest.h"
44#include "sysemu/sysemu.h"
45
46static const struct MemmapEntry {
47 hwaddr base;
48 hwaddr size;
49} spike_memmap[] = {
46static const MemMapEntry spike_memmap[] = {
50 [SPIKE_MROM] = { 0x1000, 0xf000 },
51 [SPIKE_CLINT] = { 0x2000000, 0x10000 },
52 [SPIKE_DRAM] = { 0x80000000, 0x0 },
53};
54
47 [SPIKE_MROM] = { 0x1000, 0xf000 },
48 [SPIKE_CLINT] = { 0x2000000, 0x10000 },
49 [SPIKE_DRAM] = { 0x80000000, 0x0 },
50};
51
55static void create_fdt(SpikeState *s, const struct MemmapEntry *memmap,
52static void create_fdt(SpikeState *s, const MemMapEntry *memmap,
56 uint64_t mem_size, const char *cmdline, bool is_32_bit)
57{
58 void *fdt;
59 uint64_t addr, size;
60 unsigned long clint_addr;
61 int cpu, socket;
62 MachineState *mc = MACHINE(s);
63 uint32_t *clint_cells;

--- 110 unchanged lines hidden (view full) ---

174 if (cmdline) {
175 qemu_fdt_add_subnode(fdt, "/chosen");
176 qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline);
177 }
178}
179
180static void spike_board_init(MachineState *machine)
181{
53 uint64_t mem_size, const char *cmdline, bool is_32_bit)
54{
55 void *fdt;
56 uint64_t addr, size;
57 unsigned long clint_addr;
58 int cpu, socket;
59 MachineState *mc = MACHINE(s);
60 uint32_t *clint_cells;

--- 110 unchanged lines hidden (view full) ---

171 if (cmdline) {
172 qemu_fdt_add_subnode(fdt, "/chosen");
173 qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline);
174 }
175}
176
177static void spike_board_init(MachineState *machine)
178{
182 const struct MemmapEntry *memmap = spike_memmap;
179 const MemMapEntry *memmap = spike_memmap;
183 SpikeState *s = SPIKE_MACHINE(machine);
184 MemoryRegion *system_memory = get_system_memory();
185 MemoryRegion *main_mem = g_new(MemoryRegion, 1);
186 MemoryRegion *mask_rom = g_new(MemoryRegion, 1);
187 target_ulong firmware_end_addr, kernel_start_addr;
188 uint32_t fdt_load_addr;
189 uint64_t kernel_entry;
190 char *soc_name;

--- 154 unchanged lines hidden ---
180 SpikeState *s = SPIKE_MACHINE(machine);
181 MemoryRegion *system_memory = get_system_memory();
182 MemoryRegion *main_mem = g_new(MemoryRegion, 1);
183 MemoryRegion *mask_rom = g_new(MemoryRegion, 1);
184 target_ulong firmware_end_addr, kernel_start_addr;
185 uint32_t fdt_load_addr;
186 uint64_t kernel_entry;
187 char *soc_name;

--- 154 unchanged lines hidden ---