|
@@ -20,6 +20,7 @@
|
|
|
#include <linux/compiler.h>
|
|
|
#include <asm/msr.h>
|
|
|
#include <asm/u-boot-x86.h>
|
|
|
+#include <asm/i8259.h>
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
@@ -128,9 +129,6 @@ int cpu_init_interrupts(void)
|
|
|
int irq_entry_size = irq_1 - irq_0;
|
|
|
void *irq_entry = (void *)irq_0;
|
|
|
|
|
|
- /* Just in case... */
|
|
|
- disable_interrupts();
|
|
|
-
|
|
|
/* Setup the IDT */
|
|
|
for (i = 0; i < 256; i++) {
|
|
|
idt[i].access = 0x8e;
|
|
@@ -146,9 +144,6 @@ int cpu_init_interrupts(void)
|
|
|
|
|
|
load_idt(&idt_ptr);
|
|
|
|
|
|
- /* It is now safe to enable interrupts */
|
|
|
- enable_interrupts();
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -172,6 +167,25 @@ int disable_interrupts(void)
|
|
|
return flags & X86_EFLAGS_IF;
|
|
|
}
|
|
|
|
|
|
+int interrupt_init(void)
|
|
|
+{
|
|
|
+ /* Just in case... */
|
|
|
+ disable_interrupts();
|
|
|
+
|
|
|
+#ifdef CONFIG_SYS_PCAT_INTERRUPTS
|
|
|
+ /* Initialize the master/slave i8259 pic */
|
|
|
+ i8259_init();
|
|
|
+#endif
|
|
|
+
|
|
|
+ /* Initialize core interrupt and exception functionality of CPU */
|
|
|
+ cpu_init_interrupts();
|
|
|
+
|
|
|
+ /* It is now safe to enable interrupts */
|
|
|
+ enable_interrupts();
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
/* IRQ Low-Level Service Routine */
|
|
|
void irq_llsr(struct irq_regs *regs)
|
|
|
{
|