Subject: Re: Interrupts
To: Matt Thomas <matt@3am-software.com>
From: Michael <macallan18@earthlink.net>
List: port-macppc
Date: 12/06/2004 13:10:06
Hello,
> >Hmm, that's something for the original author - compare do_pending_intr()
> >and ext_intr(), one of them explicitly sets PSL_EE, the other one masks it
> >out - so do_pending_intr() only intends to turn off interrupts at some
> >point, but ext_intr() explixitly turns them on. Looks intentional.
>
> Because on a EE exception, PSL_EE gets turned off and it has to be
> forcibly reenabled for further interrupts to occur (or nested interrupts).
Ok, this makes sense. I didn't know that an IRQ automatically disables further interrupts, on my good old Z80 I had to disable/reenable them by hand in the interrupt handler if I remember correctly.
Anyway, I moved gc_enable_intr() behind the actual processing so it would catch lost interrupts - it occasionally does so, I couldn't find any negative side effects so far ( which of course doesn't mean there are none ) but now fsck'ing an USB disk doesn't disrupt audio anymore so I'll leave it in place to see if everything else works as it should.
have fun
Michael