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