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 bdf53d9a8d4..b0b3967a2dd 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)  	 * MMU does not get a TLB miss here by using the MMU BYPASS ASI.  	 */  	register unsigned int address = (unsigned int)leon3_irqctrl_regs; + +	/* Interrupts need to be enabled to not hang the CPU */ +	local_irq_enable(); +  	__asm__ __volatile__ (  		"wr	%%g0, %%asr19\n"  		"lda	[%0] %1, %%g0\n" @@ -60,6 +64,9 @@ void pmc_leon_idle_fixup(void)   */  void pmc_leon_idle(void)  { +	/* Interrupts need to be enabled to not hang the CPU */ +	local_irq_enable(); +  	/* For systems without power-down, this will be no-op */  	__asm__ __volatile__ ("wr	%g0, %asr19\n\t");  }  |