riscv: reset after crash
If an exception occurs on ARM or x86, we call panic() which will try to reset the board. Do the same on RISC-V. To avoid -Werror=format-zero-length move a '\n' to the string passed to panic. We don't need a message here as depending on CONFIG_PANIC_HANG we will either see ### ERROR ### Please RESET the board ### or resetting ... as next message. Reviewed-by: Rick Chen <rick@andestech.com> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:

committed by
Andes

parent
fb33eaa3a2
commit
c353f2b845
@@ -27,7 +27,7 @@ static void show_efi_loaded_images(uintptr_t epc)
|
|||||||
static void show_regs(struct pt_regs *regs)
|
static void show_regs(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_SHOW_REGS
|
#ifdef CONFIG_SHOW_REGS
|
||||||
printf("SP: " REG_FMT " GP: " REG_FMT " TP: " REG_FMT "\n",
|
printf("\nSP: " REG_FMT " GP: " REG_FMT " TP: " REG_FMT "\n",
|
||||||
regs->sp, regs->gp, regs->tp);
|
regs->sp, regs->gp, regs->tp);
|
||||||
printf("T0: " REG_FMT " T1: " REG_FMT " T2: " REG_FMT "\n",
|
printf("T0: " REG_FMT " T1: " REG_FMT " T2: " REG_FMT "\n",
|
||||||
regs->t0, regs->t1, regs->t2);
|
regs->t0, regs->t1, regs->t2);
|
||||||
@@ -45,7 +45,7 @@ static void show_regs(struct pt_regs *regs)
|
|||||||
regs->s7, regs->s8, regs->s9);
|
regs->s7, regs->s8, regs->s9);
|
||||||
printf("S10: " REG_FMT " S11: " REG_FMT " T3: " REG_FMT "\n",
|
printf("S10: " REG_FMT " S11: " REG_FMT " T3: " REG_FMT "\n",
|
||||||
regs->s10, regs->s11, regs->t3);
|
regs->s10, regs->s11, regs->t3);
|
||||||
printf("T4: " REG_FMT " T5: " REG_FMT " T6: " REG_FMT "\n\n",
|
printf("T4: " REG_FMT " T5: " REG_FMT " T6: " REG_FMT "\n",
|
||||||
regs->t4, regs->t5, regs->t6);
|
regs->t4, regs->t5, regs->t6);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -80,12 +80,12 @@ static void _exit_trap(ulong code, ulong epc, ulong tval, struct pt_regs *regs)
|
|||||||
epc, regs->ra, tval);
|
epc, regs->ra, tval);
|
||||||
/* Print relocation adjustments, but only if gd is initialized */
|
/* Print relocation adjustments, but only if gd is initialized */
|
||||||
if (gd && gd->flags & GD_FLG_RELOC)
|
if (gd && gd->flags & GD_FLG_RELOC)
|
||||||
printf("EPC: " REG_FMT " RA: " REG_FMT " reloc adjusted\n\n",
|
printf("EPC: " REG_FMT " RA: " REG_FMT " reloc adjusted\n",
|
||||||
epc - gd->reloc_off, regs->ra - gd->reloc_off);
|
epc - gd->reloc_off, regs->ra - gd->reloc_off);
|
||||||
|
|
||||||
show_regs(regs);
|
show_regs(regs);
|
||||||
show_efi_loaded_images(epc);
|
show_efi_loaded_images(epc);
|
||||||
hang();
|
panic("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int interrupt_init(void)
|
int interrupt_init(void)
|
||||||
|
Reference in New Issue
Block a user