How to mask IRQ

leonp at plris.com leonp at plris.com
Sun May 29 13:13:39 UTC 2005


> > Hmmm, may be I miss something.
> > The dispatcher code I see in general looks like:
> >
> > void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int
> > excNum) {
> > register unsigned oldMask;                  /* old siu pic masks */
> > .......
> >     oldMask = ppc_cached_irq_mask;
> >     ppc_cached_irq_mask = oldMask & SIU_IvectMask[irq];
>
> <== the SIU_IvectMask[irq] is what I mean as currently it mask only the
> current interrupt but could maks others. See comment in the table
> initialization. In fact I was wrong I my first message the mak
> possibility is currently at SIU level via this table.  Could be also
> done at CPM but have no more doucmentation handy...

Well, it must be my poor english...:-)

I want to stop to receive the IRQ5 & IRQ4 interrupts at all till some other 
event occurs, which may be reenable them.

This decision of masking IRQ4-5 I can take only inside the ISR of the IRQ5.

If I mask something inside the ISR, it is erased by the mask restoration 
immediately after my ISR function.
If I call some IRQ handling functions, it will be considered only on the next 
interrupt occurrence.

Where am i wrong?

-- 
Leon M.Pollak



More information about the users mailing list