common: Move interrupt functions into a new header
[oweals/u-boot.git] / arch / x86 / cpu / i386 / interrupt.c
index ba576fef3c977eac03fb46ab737caddff4983145..78aa51a3ea6adb2b5b2ec7617a234df42feff949 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2008-2011
  * Graeme Russ, <graeme.russ@gmail.com>
@@ -7,12 +8,12 @@
  *
  * Portions of this file are derived from the Linux kernel source
  *  Copyright (C) 1991, 1992  Linus Torvalds
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <dm.h>
+#include <efi_loader.h>
+#include <irq_func.h>
 #include <asm/control_regs.h>
 #include <asm/i8259.h>
 #include <asm/interrupt.h>
@@ -38,7 +39,7 @@ static char *exceptions[] = {
        "Overflow",
        "BOUND Range Exceeded",
        "Invalid Opcode (Undefined Opcode)",
-       "Device Not Avaiable (No Math Coprocessor)",
+       "Device Not Available (No Math Coprocessor)",
        "Double Fault",
        "Coprocessor Segment Overrun",
        "Invalid TSS",
@@ -65,6 +66,18 @@ static char *exceptions[] = {
        "Reserved"
 };
 
+/**
+ * show_efi_loaded_images() - show loaded UEFI images
+ *
+ * List all loaded UEFI images.
+ *
+ * @eip:       instruction pointer
+ */
+static void show_efi_loaded_images(uintptr_t eip)
+{
+       efi_print_image_infos((void *)eip);
+}
+
 static void dump_regs(struct irq_regs *regs)
 {
        unsigned long cs, eip, eflags;
@@ -145,6 +158,7 @@ static void dump_regs(struct irq_regs *regs)
                printf("0x%8.8lx : 0x%8.8lx\n", sp, (ulong)readl(sp));
                sp -= 4;
        }
+       show_efi_loaded_images(eip);
 }
 
 static void do_exception(struct irq_regs *regs)
@@ -265,7 +279,9 @@ int interrupt_init(void)
        i8259_init();
 #endif
 
+#ifdef CONFIG_APIC
        lapic_setup();
+#endif
 
        /* Initialize core interrupt and exception functionality of CPU */
        cpu_init_interrupts();