@@ -15,14 +15,16 @@
/**
* bl_gen_jump_to: Generate bootloader code to jump to an address
*
+ * @cpu: The MIPS CPU which will run the bootloader code
* @ptr: Pointer to buffer where to write the bootloader code
* @jump_addr: Address to jump to
*/
-void bl_gen_jump_to(void **ptr, target_ulong jump_addr);
+void bl_gen_jump_to(const MIPSCPU *cpu, void **ptr, target_ulong jump_addr);
/**
* bl_gen_jump_kernel: Generate bootloader code to jump to a Linux kernel
*
+ * @cpu: The MIPS CPU which will run the bootloader code
* @ptr: Pointer to buffer where to write the bootloader code
* @set_sp: Whether to set $sp register
* @set_a0: Whether to set $a0 register
@@ -36,7 +38,7 @@ void bl_gen_jump_to(void **ptr, target_ulong jump_addr);
* @a3: Value to set $a0 to if @set_a3 is set
* @kernel_addr: Start address of the kernel to jump to
*/
-void bl_gen_jump_kernel(void **ptr,
+void bl_gen_jump_kernel(const MIPSCPU *cpu, void **ptr,
bool set_sp, target_ulong sp,
bool set_a0, target_ulong a0,
bool set_a1, target_ulong a1,
@@ -243,14 +243,14 @@ static void bl_gen_load_ulong(void **p, bl_reg rt, target_ulong imm)
}
/* Helpers */
-void bl_gen_jump_to(void **p, target_ulong jump_addr)
+void bl_gen_jump_to(const MIPSCPU *cpu, void **p, target_ulong jump_addr)
{
bl_gen_load_ulong(p, BL_REG_T9, jump_addr);
bl_gen_jalr(p, BL_REG_T9);
bl_gen_nop(p); /* delay slot */
}
-void bl_gen_jump_kernel(void **p,
+void bl_gen_jump_kernel(const MIPSCPU *cpu, void **p,
bool set_sp, target_ulong sp,
bool set_a0, target_ulong a0,
bool set_a1, target_ulong a1,
@@ -274,7 +274,7 @@ void bl_gen_jump_kernel(void **p,
bl_gen_load_ulong(p, BL_REG_A3, a3);
}
- bl_gen_jump_to(p, kernel_addr);
+ bl_gen_jump_to(cpu, p, kernel_addr);
}
void bl_gen_write_ulong(const MIPSCPU *cpu, void **p,
@@ -353,7 +353,7 @@ static void gen_firmware(const MIPSCPU *cpu, void *p,
* a2/$6 = 0
* a3/$7 = 0
*/
- bl_gen_jump_kernel(&p,
+ bl_gen_jump_kernel(cpu, &p,
true, 0, true, (int32_t)-2,
true, fdt_addr, true, 0, true, 0,
kernel_entry);
@@ -179,7 +179,7 @@ static void write_bootloader(const MIPSCPU *cpu, uint8_t *base,
/* Second part of the bootloader */
p = (uint32_t *)(base + 0x040);
- bl_gen_jump_kernel((void **)&p,
+ bl_gen_jump_kernel(cpu, (void **)&p,
true, ENVP_VADDR - 64,
true, 2, true, ENVP_VADDR,
true, ENVP_VADDR + 8,
@@ -681,7 +681,7 @@ static void bl_setup_gt64120_jump_kernel(MaltaState *s, void **p,
cpu_mips_phys_to_kseg1(NULL, 0x1be00000 + 0xcfc),
tswap32(ldl_be_p(pci_pins_cfg)));
- bl_gen_jump_kernel(p,
+ bl_gen_jump_kernel(cpu, p,
true, ENVP_VADDR - 64,
/*
* If semihosting is used, arguments have already
Propagate the target agnostic CPU pointer to the publicly declared bl_gen_jump_to() and bl_gen_jump_kernel() functions. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/hw/mips/bootloader.h | 6 ++++-- hw/mips/bootloader.c | 6 +++--- hw/mips/boston.c | 2 +- hw/mips/fuloong2e.c | 2 +- hw/mips/malta.c | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-)