sifive_u.c (052e6534c49ebef8901824b77abc39271f0d852e) sifive_u.c (9d3f7108bc43e93ceef7faa27c87eea8295c33ed)
1/*
2 * QEMU RISC-V Board Compatible with SiFive Freedom U SDK
3 *
4 * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu
5 * Copyright (c) 2017 SiFive, Inc.
6 * Copyright (c) 2019 Bin Meng <bmeng.cn@gmail.com>
7 *
8 * Provides a board compatible with the SiFive Freedom U SDK:

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

528static void sifive_u_machine_init(MachineState *machine)
529{
530 const MemMapEntry *memmap = sifive_u_memmap;
531 SiFiveUState *s = RISCV_U_MACHINE(machine);
532 MemoryRegion *system_memory = get_system_memory();
533 MemoryRegion *flash0 = g_new(MemoryRegion, 1);
534 target_ulong start_addr = memmap[SIFIVE_U_DEV_DRAM].base;
535 target_ulong firmware_end_addr, kernel_start_addr;
1/*
2 * QEMU RISC-V Board Compatible with SiFive Freedom U SDK
3 *
4 * Copyright (c) 2016-2017 Sagar Karandikar, sagark@eecs.berkeley.edu
5 * Copyright (c) 2017 SiFive, Inc.
6 * Copyright (c) 2019 Bin Meng <bmeng.cn@gmail.com>
7 *
8 * Provides a board compatible with the SiFive Freedom U SDK:

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

528static void sifive_u_machine_init(MachineState *machine)
529{
530 const MemMapEntry *memmap = sifive_u_memmap;
531 SiFiveUState *s = RISCV_U_MACHINE(machine);
532 MemoryRegion *system_memory = get_system_memory();
533 MemoryRegion *flash0 = g_new(MemoryRegion, 1);
534 target_ulong start_addr = memmap[SIFIVE_U_DEV_DRAM].base;
535 target_ulong firmware_end_addr, kernel_start_addr;
536 const char *firmware_name;
536 uint32_t start_addr_hi32 = 0x00000000;
537 int i;
538 uint32_t fdt_load_addr;
539 uint64_t kernel_entry;
540 DriveInfo *dinfo;
541 BlockBackend *blk;
542 DeviceState *flash_dev, *sd_dev, *card_dev;
543 qemu_irq flash_cs, sd_cs;

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

590 case MSEL_L2LIM_QSPI2_SD:
591 start_addr = memmap[SIFIVE_U_DEV_L2LIM].base;
592 break;
593 default:
594 start_addr = memmap[SIFIVE_U_DEV_DRAM].base;
595 break;
596 }
597
537 uint32_t start_addr_hi32 = 0x00000000;
538 int i;
539 uint32_t fdt_load_addr;
540 uint64_t kernel_entry;
541 DriveInfo *dinfo;
542 BlockBackend *blk;
543 DeviceState *flash_dev, *sd_dev, *card_dev;
544 qemu_irq flash_cs, sd_cs;

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

591 case MSEL_L2LIM_QSPI2_SD:
592 start_addr = memmap[SIFIVE_U_DEV_L2LIM].base;
593 break;
594 default:
595 start_addr = memmap[SIFIVE_U_DEV_DRAM].base;
596 break;
597 }
598
598 if (riscv_is_32bit(&s->soc.u_cpus)) {
599 firmware_end_addr = riscv_find_and_load_firmware(machine,
600 RISCV32_BIOS_BIN, start_addr, NULL);
601 } else {
602 firmware_end_addr = riscv_find_and_load_firmware(machine,
603 RISCV64_BIOS_BIN, start_addr, NULL);
604 }
599 firmware_name = riscv_default_firmware_name(&s->soc.u_cpus);
600 firmware_end_addr = riscv_find_and_load_firmware(machine, firmware_name,
601 start_addr, NULL);
605
606 if (machine->kernel_filename) {
607 kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc.u_cpus,
608 firmware_end_addr);
609
610 kernel_entry = riscv_load_kernel(machine->kernel_filename,
611 kernel_start_addr, NULL);
612

--- 386 unchanged lines hidden ---
602
603 if (machine->kernel_filename) {
604 kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc.u_cpus,
605 firmware_end_addr);
606
607 kernel_entry = riscv_load_kernel(machine->kernel_filename,
608 kernel_start_addr, NULL);
609

--- 386 unchanged lines hidden ---