.TITLE VDPRV ;VDDRV PRIVILEGE CHECK SUBROUTINE .IDENT /V001A/ ;G.C. EVERHART .GLOBL S.RSAV,S.RRES .GLOBL VDPRV ;CALLED FROM VDDRV TO TEST FURTHER ACCESS RIGHTS ;ON ENTRY, ; R0=VD: UNIT NUMBER (0,1,2,3,4,5,...) ; R1=IO REQUEST QUEUE (IORQ) NODE ADDRESS ; R2=VDUIT ADDRESS ; ALL REGISTERS ARE AVAILABLE ;ON RETURN: ; CARRY SET = FAIL ACCESS REQUEST ; Z SET = ALLOW ACCESS AND DISREGARD UIC OF CALLER REQUEST ; (BYPASS CHECK IN HANDLER OF TASK UIC) ; CARRY AND Z CLEAR: ; ALLOW ACCESS IF UIC IS IN THE LIST OF PERMITTED UIC'S ; BUILT INTO THE HANDLER. ; ; THIS ROUTINE IS PROVIDED TO ALLOW AN INSTALLATION WITH SPECIAL ;SECURITY REQUIREMENTS TO CODE THEM IN WITHOUT HAVING TO MODIFY THE ;DEVICE HANDLER PER SE. ; THE VERSION HERE JUST RETURNS AND IS AN EFFECTIVE NO-OP. ; ONE USES THE ATL ADDRESS IN THE I/O REQUEST QUEUE TO ;LOCATE THE TI OF THE CALLER, TASK UIC, TASK NAME, ETC. IF NON-ZERO. ;(A ZERO ATL ADDRESS MEANS AN EXEC REQUEST...) ; ROUTINES S.RSAV AND S.RRES ARE AVAILABLE TO SAVE AND RESTORE ;REGISTERS SEMI-INVISIBLY. ; THEY ARE CALLED BY "JSR PC,S.RSAV" OR "JSR PC,S.RRES" ;AND PUSH ALL REGS ONTO THE STACK. A CALL TO S.RSAV WILL RETURN WITH ;THE STACK CONTAINING THE CALL PC,R5,R4,R3,R2,R1, AND R0 PUSHED IN THAT ;ORDER, AND THE REGISTERS UNCHANGED. S.RRES WILL RESTORE THE REGISTERS ;FROM AN S.RSAV CALL. VDPRV:: CCC RTS PC .END