Try to Disable PPC Interrupt

Kumar Gala galak at kernel.crashing.org
Fri Mar 30 04:41:30 EST 2007


On Mar 28, 2007, at 11:20 PM, Zhou Rui wrote:

> Hi
> Sorry for my silly mistake, and I modify it like this:
> #ifndef MODULE
> #define MODULE
> #endif
>
> #ifndef __KERNEL__
> #define __KERNEL__
> #endif
>
> #include <linux/module.h>
> #include <linux/kernel.h>
> #include <linux/types.h>
> #include <linux/errno.h>
>
> void hw_disable_irq (void) {
>         int c;
>         __asm__ __volatile__(
>                 "mfmsr %%r0; \
>                 wrteei 0; \
>                 mfmsr %0;":"=r"(c) : );
>
Why don't use use local_irq_disable() ?


>         printk("%x\n",c);
> }
>
> int init_module(void)
> {
>           hw_disable_irq();
> }
>
> void cleanup_module(void)
> {
> }
>
> MODULE_LICENSE("GPL");
>
>
> I can get the output is 0x21030. But I also use BDI2000 here and  
> when I halt the board from BDI2000, I get
> 405EP>halt
>     Core number            : 0
>     Core state                 : debug mode
>     Debug entry cause : JTAG stop request
>     Current PC               : 0xc00042d8
>     Current CR               : 0x22004082
>     Current MSR           : 0x00029030
>     Current LR               : 0xc00042d8
> Hope my understanding for big endian is right. It seems 0x00029030  
> in MSR is
> 00000000 00000010 10010000 00110000, but 0x21030 is
> 00000000 00000010 00010000 00110000.
> It seems the 16th bit (EE) has been set to 0, but what should I do  
> to make sure whether the external interrupt is disabled or not?  
> Thank you very much.

What exactly are you asking?  If MSR[EE] = 0, interrupts are disabled.

- k



More information about the Linuxppc-embedded mailing list