spike.c (a8a7f680d25a6dc52b1a56a597563a6d6be5f8da) | spike.c (9d3f7108bc43e93ceef7faa27c87eea8295c33ed) |
---|---|
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 * --- 176 unchanged lines hidden (view full) --- 185 186static void spike_board_init(MachineState *machine) 187{ 188 const MemMapEntry *memmap = spike_memmap; 189 SpikeState *s = SPIKE_MACHINE(machine); 190 MemoryRegion *system_memory = get_system_memory(); 191 MemoryRegion *mask_rom = g_new(MemoryRegion, 1); 192 target_ulong firmware_end_addr, kernel_start_addr; | 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 * --- 176 unchanged lines hidden (view full) --- 185 186static void spike_board_init(MachineState *machine) 187{ 188 const MemMapEntry *memmap = spike_memmap; 189 SpikeState *s = SPIKE_MACHINE(machine); 190 MemoryRegion *system_memory = get_system_memory(); 191 MemoryRegion *mask_rom = g_new(MemoryRegion, 1); 192 target_ulong firmware_end_addr, kernel_start_addr; |
193 const char *firmware_name; |
|
193 uint32_t fdt_load_addr; 194 uint64_t kernel_entry; 195 char *soc_name; 196 int i, base_hartid, hart_count; 197 198 /* Check socket count limit */ 199 if (SPIKE_SOCKETS_MAX < riscv_socket_count(machine)) { 200 error_report("number of sockets/nodes should be less than %d", --- 49 unchanged lines hidden (view full) --- 250 machine->ram); 251 252 /* boot rom */ 253 memory_region_init_rom(mask_rom, NULL, "riscv.spike.mrom", 254 memmap[SPIKE_MROM].size, &error_fatal); 255 memory_region_add_subregion(system_memory, memmap[SPIKE_MROM].base, 256 mask_rom); 257 | 194 uint32_t fdt_load_addr; 195 uint64_t kernel_entry; 196 char *soc_name; 197 int i, base_hartid, hart_count; 198 199 /* Check socket count limit */ 200 if (SPIKE_SOCKETS_MAX < riscv_socket_count(machine)) { 201 error_report("number of sockets/nodes should be less than %d", --- 49 unchanged lines hidden (view full) --- 251 machine->ram); 252 253 /* boot rom */ 254 memory_region_init_rom(mask_rom, NULL, "riscv.spike.mrom", 255 memmap[SPIKE_MROM].size, &error_fatal); 256 memory_region_add_subregion(system_memory, memmap[SPIKE_MROM].base, 257 mask_rom); 258 |
258 if (riscv_is_32bit(&s->soc[0])) { 259 firmware_end_addr = riscv_find_and_load_firmware(machine, 260 RISCV32_BIOS_BIN, memmap[SPIKE_DRAM].base, 261 htif_symbol_callback); 262 } else { 263 firmware_end_addr = riscv_find_and_load_firmware(machine, 264 RISCV64_BIOS_BIN, memmap[SPIKE_DRAM].base, 265 htif_symbol_callback); 266 } | 259 firmware_name = riscv_default_firmware_name(&s->soc[0]); 260 firmware_end_addr = riscv_find_and_load_firmware(machine, firmware_name, 261 memmap[SPIKE_DRAM].base, 262 htif_symbol_callback); |
267 268 /* Load kernel */ 269 if (machine->kernel_filename) { 270 kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc[0], 271 firmware_end_addr); 272 273 kernel_entry = riscv_load_kernel(machine->kernel_filename, 274 kernel_start_addr, --- 76 unchanged lines hidden --- | 263 264 /* Load kernel */ 265 if (machine->kernel_filename) { 266 kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc[0], 267 firmware_end_addr); 268 269 kernel_entry = riscv_load_kernel(machine->kernel_filename, 270 kernel_start_addr, --- 76 unchanged lines hidden --- |