Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7be5c55a authored by Magnus Damm's avatar Magnus Damm Committed by Paul Mundt
Browse files

sh: simplify kexec vbr code



Setup the vbr register in machine_kexec(). This
instead of passing values to the assembly snippet.

Signed-off-by: default avatarMagnus Damm <damm@igel.co.jp>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent c2035184
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -23,8 +23,7 @@
typedef NORET_TYPE void (*relocate_new_kernel_t)(
				unsigned long indirection_page,
				unsigned long reboot_code_buffer,
				unsigned long start_address,
				unsigned long vbr_reg) ATTRIB_NORET;
				unsigned long start_address) ATTRIB_NORET;

extern const unsigned char relocate_new_kernel[];
extern const unsigned int relocate_new_kernel_size;
@@ -76,14 +75,8 @@ void machine_kexec(struct kimage *image)

	unsigned long page_list;
	unsigned long reboot_code_buffer;
	unsigned long vbr_reg;
	relocate_new_kernel_t rnk;

#if defined(CONFIG_SH_STANDARD_BIOS)
	vbr_reg = ((unsigned long )gdb_vbr_vector) - 0x100;
#else
	vbr_reg = 0x80000000;  // dummy
#endif
	/* Interrupts aren't acceptable while we reboot */
	local_irq_disable();

@@ -100,9 +93,15 @@ void machine_kexec(struct kimage *image)
        kexec_info(image);
	flush_cache_all();

	set_bl_bit();
#if defined(CONFIG_SH_STANDARD_BIOS)
	asm volatile("ldc %0, vbr" :
		     : "r" (((unsigned long) gdb_vbr_vector) - 0x100)
		     : "memory");
#endif
	/* now call it */
	rnk = (relocate_new_kernel_t) reboot_code_buffer;
	(*rnk)(page_list, reboot_code_buffer, P2SEGADDR(image->start), vbr_reg);
	(*rnk)(page_list, reboot_code_buffer, P2SEGADDR(image->start));
}

void arch_crash_save_vmcoreinfo(void)
+0 −4
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ relocate_new_kernel:
	/* r4 = indirection_page   */
	/* r5 = reboot_code_buffer */
	/* r6 = start_address      */
	/* r7 = vbr_reg            */

	mov.l	10f,r8	  /* PAGE_SIZE */
	mov.l	11f,r9    /* P2SEG */
@@ -80,9 +79,6 @@ relocate_new_kernel:
	bra	0b
	nop
6:
#ifdef CONFIG_SH_STANDARD_BIOS
	ldc   r7, vbr
#endif
	jmp @r6
	nop