Message ID | PSXP216MB02772CA8ED100BB578388BA6DDE50@PSXP216MB0277.KORP216.PROD.OUTLOOK.COM |
---|---|
State | New |
Headers | show |
Series | Add the STM32F405 and Netduino Plus 2 machine | expand |
On 6/19/19 6:53 AM, Alistair Francis wrote: > Allow the kernel's entry point information to be returned when loading a > kernel. > > Signed-off-by: Alistair Francis <alistair@alistair23.me> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > 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 { >
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 {
Allow the kernel's entry point information to be returned when loading a kernel. Signed-off-by: Alistair Francis <alistair@alistair23.me> --- hw/arm/armv7m.c | 4 +++- include/hw/arm/boot.h | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-)