GKN%OAK.SAINET.MFENET@LLL-MFE.ARPA (02/24/86)
From: <GKN%OAK.SAINET.MFENET@LLL-MFE.Arpa> (Gerard K. Newman)
Date: Mon, 24-FEB-1986 08:32 EST
To: Info-VAX@SRI-KL.Arpa
Message-ID: <[OAK.SAINET.MFENET].070DC000.008EB05A.GKN>
US-Mail: Science Applications; P.O. Box 2501; Oak Ridge, TN 37831
Telephone: (615) 482-9031 x293
X-VMS-Mail-To: INFO_VAX
From: Arpa%"rick@NGP.UTEXAS.EDU" 15-FEB-1986 18:20
Subj: Catching machine check exceptions in a driver
I am writing a device driver for a somewhat nasty device, in that when
the device is busy, it does not respond to bus requests for the CSR.
This causes a machine check on a Microvax II. When things work
correctly, you are supposed to "know" when the CSR is unavailable, but
there are problems with timeout conditions. Anyway, I would like to
cheat and intercept the machine check exception just long enough to test
the CSR and see if it is there. Does anyone happen to know how to do
this?
Are you looking to intercept machine checks forever, or just for a given
sequence of instructions? If it's only for a given sequence of instructions,
you can embed the routine between a $PRTCTINI and a $PRTCTEND. Please note
that the sequence of instructions embedded between these two macros will
execute at IPL 31 (IPL$_POWER). When you reach the instruction following the
$PRTCTEND, R0<0> := 0 indicates that a machine check occurred. You also must
specify the variety of machine checks you wish to be immune from. You supply
a mask value for the second argument of $PRTCTINI which describes which
machine checks to ignore. The bits for this mask are defined in $MCHKDEF.
See fiche 374, panels G9 and I9 if you're interested in the nitty gritty.
$PRTCTINI NO_MCHK,#<MCHK$M_UBA> ;Don't bother with UBA exceptions
. ;Do your stuff
. ; in here which
. ; might cause a machine check
$PRTCTEND NO_MCHK ;Done with protected code.
BLBC R0,OOPS ;Rats!
Hope this is what you want.
gknrick@NGP.UTEXAS.EDU (Rick Watson) (02/25/86)
Great, thanks! I knew there must be a "legal" way to do this. This is just what I need to do. Rick Watson University of Texas Computation Center arpa: rick@ngp.UTEXAS.EDU rick@ngp.ARPA uucp: ...seismo!ut-sally!ut-ngp!rick rick@ut-ngp.UUCP bitnet: ccaw001@utadnx phone: 512/471-3241