[SPARC64]: Make sure IRQs are disabled properly during early boot.
Else we trigger the new irqs_disable() assertion in start_kernel(). Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
18b0bbd8ca
Коммит
d8573e20d5
|
@ -551,9 +551,10 @@ setup_trap_table:
|
||||||
save %sp, -192, %sp
|
save %sp, -192, %sp
|
||||||
|
|
||||||
/* Force interrupts to be disabled. */
|
/* Force interrupts to be disabled. */
|
||||||
rdpr %pstate, %o1
|
rdpr %pstate, %l0
|
||||||
andn %o1, PSTATE_IE, %o1
|
andn %l0, PSTATE_IE, %o1
|
||||||
wrpr %o1, 0x0, %pstate
|
wrpr %o1, 0x0, %pstate
|
||||||
|
rdpr %pil, %l1
|
||||||
wrpr %g0, 15, %pil
|
wrpr %g0, 15, %pil
|
||||||
|
|
||||||
/* Make the firmware call to jump over to the Linux trap table. */
|
/* Make the firmware call to jump over to the Linux trap table. */
|
||||||
|
@ -622,11 +623,9 @@ setup_trap_table:
|
||||||
call init_irqwork_curcpu
|
call init_irqwork_curcpu
|
||||||
nop
|
nop
|
||||||
|
|
||||||
/* Now we can turn interrupts back on. */
|
/* Now we can restore interrupt state. */
|
||||||
rdpr %pstate, %o1
|
wrpr %l0, 0, %pstate
|
||||||
or %o1, PSTATE_IE, %o1
|
wrpr %l1, 0x0, %pil
|
||||||
wrpr %o1, 0, %pstate
|
|
||||||
wrpr %g0, 0x0, %pil
|
|
||||||
|
|
||||||
ret
|
ret
|
||||||
restore
|
restore
|
||||||
|
|
|
@ -928,8 +928,6 @@ static void sparc64_start_timers(void)
|
||||||
__asm__ __volatile__("wrpr %0, 0x0, %%pstate"
|
__asm__ __volatile__("wrpr %0, 0x0, %%pstate"
|
||||||
: /* no outputs */
|
: /* no outputs */
|
||||||
: "r" (pstate));
|
: "r" (pstate));
|
||||||
|
|
||||||
local_irq_enable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct freq_table {
|
struct freq_table {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче