Subject: Re: some diffs to 1.0-current / 1.0 (probably as well)
To: Niklas Hallqvist <niklas@appli.se>
From: None <mw@eunet.ch>
List: amiga-dev
Date: 01/03/1995 18:09:28
> Zeus SCSI interface, and this is what breaks.  First I thought some
> interrupts got missed so I rewrote _fake_lev6intr to be a loop like
> this:
> 
> _lev4intr:
> _fake_lev6intr:	
> 	moveml	d0/d2/a0,sp@-		| save scratch regs

Did you write this from memory, or is this the actual code you were
compiling? This originally was
        moveml  #0xC0C0,sp@-
which symbolically would be
	moveml	d0/d1/a0/a1,sp@-
nothing going on with d2... Take care, you're later branching into
the other interrupt-handler, which expects to find d0/d1/a0/a1 on
the stack to restore... Store d2 after deciding that it's indeed
a fake level 6.

> Yeah, I changed Lnotdma to Lplainintr, but that shouldn't matter.  I
> also removed the intreq clearing from the devices as I do it in
> Lskipciab instead.  I have removed the INTF_AUD? intena resets in
> cc.c.  However, this doesn't help.  My zeus refuses to mount the root
> with a ENXIO, but all the config stuff went OK, so it has to be the
> interrupt system that's messed up.  Michael, have you tried Markus'
> changes?  Markus, anyone, ideas? 

Unless you did some other changes you didn't mention, check your 
register saving ...

> BTW, the above code makes statclock (called from hardclock) panic at
> times (when siop_debug is enabled), so I must be doing something
> wrong.

Looks like siop is reenabling AUD3 too early, so that the clock can
interrupt a siop-function that in theory should run at the same spl...

-Markus
-- 
EUnet Switzerland   Tel:     +41 1 291 45 80	Markus Wild
Zweierstrasse 35    Hotline: +41 1 291 45 60	mw@eunet.ch
CH-8004 Zuerich	    Fax:     +41 1 291 46 42	S=mw;P=EUnet;A=EUnet;C=CH
>Solaris 2 is not an upgrade from Solaris 1. They just want you to THINK it is.