diff options
-rw-r--r-- | arch/sparc/kernel/leon_pmc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc/kernel/leon_pmc.c b/arch/sparc/kernel/leon_pmc.c index bdf53d9a8d46..b0b3967a2dd2 100644 --- a/arch/sparc/kernel/leon_pmc.c +++ b/arch/sparc/kernel/leon_pmc.c | |||
@@ -47,6 +47,10 @@ void pmc_leon_idle_fixup(void) | |||
47 | * MMU does not get a TLB miss here by using the MMU BYPASS ASI. | 47 | * MMU does not get a TLB miss here by using the MMU BYPASS ASI. |
48 | */ | 48 | */ |
49 | register unsigned int address = (unsigned int)leon3_irqctrl_regs; | 49 | register unsigned int address = (unsigned int)leon3_irqctrl_regs; |
50 | |||
51 | /* Interrupts need to be enabled to not hang the CPU */ | ||
52 | local_irq_enable(); | ||
53 | |||
50 | __asm__ __volatile__ ( | 54 | __asm__ __volatile__ ( |
51 | "wr %%g0, %%asr19\n" | 55 | "wr %%g0, %%asr19\n" |
52 | "lda [%0] %1, %%g0\n" | 56 | "lda [%0] %1, %%g0\n" |
@@ -60,6 +64,9 @@ void pmc_leon_idle_fixup(void) | |||
60 | */ | 64 | */ |
61 | void pmc_leon_idle(void) | 65 | void pmc_leon_idle(void) |
62 | { | 66 | { |
67 | /* Interrupts need to be enabled to not hang the CPU */ | ||
68 | local_irq_enable(); | ||
69 | |||
63 | /* For systems without power-down, this will be no-op */ | 70 | /* For systems without power-down, this will be no-op */ |
64 | __asm__ __volatile__ ("wr %g0, %asr19\n\t"); | 71 | __asm__ __volatile__ ("wr %g0, %asr19\n\t"); |
65 | } | 72 | } |