Unverified Commit 751f8f41 authored by Bin Meng's avatar Bin Meng Committed by Palmer Dabbelt
Browse files

riscv: Add a helper routine for finding firmware



This adds a helper routine for finding firmware. It is currently
used only for "-bios default" case.

Signed-off-by: default avatarBin Meng <bmeng.cn@gmail.com>
Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
Signed-off-by: default avatarPalmer Dabbelt <palmer@sifive.com>
parent ddf78132
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -69,13 +69,7 @@ void riscv_find_and_load_firmware(MachineState *machine,
         * so then in the future we can make "-bios default" the default option
         * if no -bios option is set without breaking anything.
         */
        firmware_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS,
                                           default_machine_firmware);
        if (firmware_filename == NULL) {
            error_report("Unable to load the default RISC-V firmware \"%s\"",
                         default_machine_firmware);
            exit(1);
        }
        firmware_filename = riscv_find_firmware(default_machine_firmware);
    } else {
        firmware_filename = machine->firmware;
    }
@@ -90,6 +84,20 @@ void riscv_find_and_load_firmware(MachineState *machine,
    }
}

char *riscv_find_firmware(const char *firmware_filename)
{
    char *filename;

    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, firmware_filename);
    if (filename == NULL) {
        error_report("Unable to load the RISC-V firmware \"%s\"",
                     firmware_filename);
        exit(1);
    }

    return filename;
}

target_ulong riscv_load_firmware(const char *firmware_filename,
                                 hwaddr firmware_load_addr)
{
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
void riscv_find_and_load_firmware(MachineState *machine,
                                  const char *default_machine_firmware,
                                  hwaddr firmware_load_addr);
char *riscv_find_firmware(const char *firmware_filename);
target_ulong riscv_load_firmware(const char *firmware_filename,
                                 hwaddr firmware_load_addr);
target_ulong riscv_load_kernel(const char *kernel_filename);