.TITLE UBAINTDSP - UNIBUS ADAPTER INTERRUPT DISPATCHER .IDENT /01/ ; ; COPYRIGHT (C) 1977 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- ; SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY ; OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM ; AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ; ; D. N. CUTLER 10-FEB-77 ; ; UNIBUS ADAPTER INTERRUPT DISPATCHER ; ; MACRO LIBRARY CALLS ; $PRDEF ;DEFINE PROCESSOR REGISTERS $UBADEF ;DEFINE UBA REGISTER OFFSETS .PAGE .SBTTL UNIBUS ADAPTER INTERRUPT DISPATCHER ;+ ; UBA$INT - UNIBUS ADAPTER INTERRUPT DISPATCHER ; ; THIS ROUTINE IS ENTERED VIA A JSB INSTRUCTION WHEN AN INTERRUPT OCCURS ; ON A UNIBUS ADAPTER. THE STATE OF THE STACK ON ENTRY IS: ; ; 00(SP) = ADDRESS OF INTERRUPT TABLE CASE INSTRUCTION. ; 04(SP) = SAVED PSL. ; 08(SP) = SAVED R4. ; 12(SP) = SAVED R5. ; 16(SP) = INTERRUPT PC. ; 20(SP) = INTERRUPT PSL. ; ; R5 = ADDRESS OF UBA CONFIGURATION STATUS REGISTER. ; ; INTERRUPT DISPATCHING OCCURS AS FOLLOWS: ; ; ; TWO CONDITIONS CAUSE ERROR LOG ENTRIES: ; ;- .PSECT WIONONPAGED UBA$INT:: ;UNIBUS ADAPTER INTERRUPT DISPATCHER MFPR #PR$_IPL,R4 ;GET CURRENT PROCESSOR PRIORITY MOVL UBA$L_BRRVR-<4*20>(R5)[R4],R4 ;READ INTERRUPT VECTOR ADDRESS BGEQ 10$ ;IF GEQ NO ADAPTER INTERRUPT PENDING ;******* TEMP ****** HALT ; ;******* TEMP ****** 10$: DIVL #4,R4 ;CALCULATE VECTOR NUMBER JSB @(SP)+ ;DISPATCH INTERRUPT TO PROPER ROUTINE MOVQ (SP)+,R4 ;RESTORE REGISTERS REI ; ; ; UNEXPECTED UBA INTERRUPT ; UBA$UNEXPINT:: ;UNEXPECTED INTERRUPT ;******* TEMP ****** REI ; ;******* TEMP ****** .PAGE .SBTTL UNIBUS ADAPTER INITIALIZATION ;+ ; UBA$INITIAL - UNIBUS ADAPTER INITIALIZATION ; ; THIS ROUTINE IS CALLED VIA A JSB INSTRUCTION AT SYSTEM STARTUP AND AFTER ; A POWER RECOVERY RESTART TO ALLOW INITIALIZATION OF UNIBUS ADAPTERS. ; ; INPUTS: ; ; R4 = ADDRESS OF UNIBUS ADAPTER CONFIGURATION STATUS REGISTER. ; ; ALL INTERRUPTS ARE LOCKED OUT. ; ; OUTPUTS: ; ; THE UNIBUS ADAPTER IS INITIALIZED AND INTERRUPTS ARE ENABLED. ;- UBA$INITIAL:: ;UNIBUS ADAPTER INITIALIZATION MCOML #0,UBA$L_CSR(R4) ;CLEAR ALL ADAPTER CONFIGURATION ERRORS MCOML #0,UBA$L_SR(R4) ;CLEAR ALL ADAPTER STATUS BITS MOVL #UBA$M_CR_CNFIE!- ;ENABLE INTERRUPTS UBA$M_CR_SUEFIE!- ; UBA$M_CR_BRIE!- ; UBA$M_CR_IFSIE,UBA$L_CR(R4) ; RSB ; .END