Allow the kernel's entry point information to be returned when loading a kernel.
Signed-off-by: Alistair Francis <alist...@alistair23.me> --- hw/arm/armv7m.c | 4 +++- include/hw/arm/boot.h | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index b9efad6bac..8ee6291a47 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -304,7 +304,7 @@ static void armv7m_reset(void *opaque) cpu_reset(CPU(cpu)); } -void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size) +uint64_t armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size) { int image_size; uint64_t entry; @@ -351,6 +351,8 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size) * board must call this function! */ qemu_register_reset(armv7m_reset, cpu); + + return entry; } static Property bitband_properties[] = { diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h index c48cc4c2bc..4e4db0416c 100644 --- a/include/hw/arm/boot.h +++ b/include/hw/arm/boot.h @@ -29,11 +29,13 @@ typedef enum { * @kernel_filename: file to load * @mem_size: mem_size: maximum image size to load * + * returns: location of the kernel's entry point + * * Load the guest image for an ARMv7M system. This must be called by * any ARMv7M board. (This is necessary to ensure that the CPU resets * correctly on system reset, as well as for kernel loading.) */ -void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size); +uint64_t armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size); /* arm_boot.c */ struct arm_boot_info { -- 2.11.0