@@ 289,6 289,7 @@ intr(Ureg *ur)
{
static uchar devint;
ulong cause = ur->cause;
+ ulong isr;
m->intr++;
cause &= INTR7|INTR6|INTR5|INTR4|INTR3|INTR2|INTR1|INTR0;
@@ 317,11 318,18 @@ intr(Ureg *ur)
cause &= ~INTR3;
}
if(cause & INTR2) {
- iprint("R4030 Interrupt\n");
- iprint(" ISR #%lux\n", IO(ulong, R4030Isr));
- iprint(" ET #%lux\n", IO(ulong, R4030Et));
- iprint(" RFA #%lux\n", IO(ulong, R4030Rfa));
- iprint(" MFA #%lux\n", IO(ulong, R4030Mfa));
+ isr = IO(ulong, R4030Isr);
+ if(isr & (1<<5)) {
+ audiointr();
+ isr &= ~(1<<5);
+ }
+ if(isr) {
+ iprint("R4030 Interrupt\n");
+ iprint(" ISR #%lux\n", IO(ulong, R4030Isr));
+ iprint(" ET #%lux\n", IO(ulong, R4030Et));
+ iprint(" RFA #%lux\n", IO(ulong, R4030Rfa));
+ iprint(" MFA #%lux\n", IO(ulong, R4030Mfa));
+ }
cause &= ~INTR2;
}
if(cause & INTR4) {