[SPARC64]: Make sure IRQs are disabled properly during early boot.
authorDavid S. Miller <davem@sunset.davemloft.net>
Thu, 13 Jul 2006 23:05:26 +0000 (16:05 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sat, 15 Jul 2006 00:00:21 +0000 (17:00 -0700)
Else we trigger the new irqs_disable() assertion in start_kernel().

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/kernel/head.S
arch/sparc64/kernel/time.c

index 75684b5..c8e9dc9 100644 (file)
@@ -551,9 +551,10 @@ setup_trap_table:
        save    %sp, -192, %sp
 
        /* Force interrupts to be disabled. */
-       rdpr    %pstate, %o1
-       andn    %o1, PSTATE_IE, %o1
+       rdpr    %pstate, %l0
+       andn    %l0, PSTATE_IE, %o1
        wrpr    %o1, 0x0, %pstate
+       rdpr    %pil, %l1
        wrpr    %g0, 15, %pil
 
        /* Make the firmware call to jump over to the Linux trap table.  */
@@ -622,11 +623,9 @@ setup_trap_table:
        call    init_irqwork_curcpu
         nop
 
-       /* Now we can turn interrupts back on. */
-       rdpr    %pstate, %o1
-       or      %o1, PSTATE_IE, %o1
-       wrpr    %o1, 0, %pstate
-       wrpr    %g0, 0x0, %pil
+       /* Now we can restore interrupt state. */
+       wrpr    %l0, 0, %pstate
+       wrpr    %l1, 0x0, %pil
 
        ret
         restore
index b43de64..094d3e3 100644 (file)
@@ -928,8 +928,6 @@ static void sparc64_start_timers(void)
        __asm__ __volatile__("wrpr      %0, 0x0, %%pstate"
                             : /* no outputs */
                             : "r" (pstate));
-
-       local_irq_enable();
 }
 
 struct freq_table {