From mboxrd@z Thu Jan 1 00:00:00 1970 Message-Id: <200105210447.GAA29394@chuckle.iba.co.za> From: lucio@proxima.alt.za To: 9fans@cse.psu.edu MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] Floppy driver Date: Mon, 21 May 2001 06:49:35 +0200 Topicbox-Message-UUID: a4141786-eac9-11e9-9e20-41e7f4b1d025 The following code: print ("floppyrevive(%d): %lux - %lux\n", ++x, &fl, fl.d); /* reset controller and turn all motors off */ splhi(); fl.ncmd = 1; fl.cmd[0] = 0; outb(Pdor, 0); delay(10); outb(Pdor, Fintena|Fena); delay(10); spllo(); print ("floppyrevive(%d): %lux - %lux\n", ++x, &fl, fl.d); from /sys/src/boot/pc/devfloppy.c:/^floppyrevive (I seem to recall) reveals that fl.d changes value from a valid address to 0xffffffff. Now, "fl" is the FController structure, defined in ..../devfloppy.h (and in devfloppy.c, I removed the second declaration) and I really cannot figure how one (or more) fields within that structure could be affected by the operations between. Also, this only occurs on an old 386/387 platform, with an add-on ATA and floppy controller. I have not seen the symptom on the Pentium I first experimented with. The symptom itself is obscure: from trap.c: "exception/interrupt 12". Clues, anyone? ++L