]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - arch/arm/lib/interrupts_64.c
arm64: show_regs: Dump the LRs HW values
[people/ms/u-boot.git] / arch / arm / lib / interrupts_64.c
index b4767225564f97627ac39f09137206a5e1c0bbcf..8a5d82468b3f72cb8765442b1f58126f409507bd 100644 (file)
@@ -7,7 +7,9 @@
 
 #include <common.h>
 #include <linux/compiler.h>
+#include <efi_loader.h>
 
+DECLARE_GLOBAL_DATA_PTR;
 
 int interrupt_init(void)
 {
@@ -28,8 +30,12 @@ void show_regs(struct pt_regs *regs)
 {
        int i;
 
-       printf("ELR:     %lx\n", regs->elr);
-       printf("LR:      %lx\n", regs->regs[30]);
+       if (gd->flags & GD_FLG_RELOC)
+               printf("elr: %016lx lr : %016lx (reloc)\n",
+                      regs->elr - gd->reloc_off,
+                      regs->regs[30] - gd->reloc_off);
+       printf("elr: %016lx lr : %016lx\n", regs->elr, regs->regs[30]);
+
        for (i = 0; i < 29; i += 2)
                printf("x%-2d: %016lx x%-2d: %016lx\n",
                       i, regs->regs[i], i+1, regs->regs[i+1]);
@@ -41,6 +47,7 @@ void show_regs(struct pt_regs *regs)
  */
 void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -51,6 +58,7 @@ void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -61,6 +69,7 @@ void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -71,6 +80,7 @@ void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -81,6 +91,7 @@ void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_sync(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -91,6 +102,7 @@ void do_sync(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_irq(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("\"Irq\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -101,6 +113,7 @@ void do_irq(struct pt_regs *pt_regs, unsigned int esr)
  */
 void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("\"Fiq\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");
@@ -114,6 +127,7 @@ void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
  */
 void __weak do_error(struct pt_regs *pt_regs, unsigned int esr)
 {
+       efi_restore_gd();
        printf("\"Error\" handler, esr 0x%08x\n", esr);
        show_regs(pt_regs);
        panic("Resetting CPU ...\n");