]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
x86: Call cpu_init_interrupts() from interrupt_init()
authorBin Meng <bmeng.cn@gmail.com>
Thu, 20 Nov 2014 08:10:49 +0000 (16:10 +0800)
committerSimon Glass <sjg@chromium.org>
Tue, 25 Nov 2014 13:34:02 +0000 (06:34 -0700)
Currently cpu_init_interrupts() is called from cpu_init_r() to
setup the interrupt and exception of the cpu core, but at that
time the i8259 has not been initialized to mask all the irqs
and remap the master i8259 interrupt vector base, so the whole
system is at risk of being interrupted, and if interrupted,
wrong interrupt/exception message is shown.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/cpu.c
arch/x86/lib/pcat_interrupts.c

index b391b7ade47298336bb9042c9b3cbb8f2bebde14..ac253922ae4a6cede3b117d7e89263bb7699fe28 100644 (file)
@@ -322,8 +322,6 @@ int x86_cpu_init_f(void)
 
 int x86_cpu_init_r(void)
 {
-       /* Initialize core interrupt and exception functionality of CPU */
-       cpu_init_interrupts();
        return 0;
 }
 int cpu_init_r(void) __attribute__((weak, alias("x86_cpu_init_r")));
index 2dc2fbd55b626166bfd8ca31f377b9e3c1d3fac6..f388db22761e9c19d2160a34e37461088401f1a0 100644 (file)
@@ -65,6 +65,9 @@ int interrupt_init(void)
        /* Interrupt 9 should be level triggered (SCI). The OS might do this */
        configure_irq_trigger(9, true);
 
+       /* Initialize core interrupt and exception functionality of CPU */
+       cpu_init_interrupts();
+
        enable_interrupts();
 
        return 0;