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