Type ASSEMBLE
Source Lines : 1,452
Fixes Applied : 5
Most Recent Version : Tuesday, December 12, 1978
Last Fix ID : [R14550DS]
Module
DMSITS (INTSVC)
Function
HANDLE SVC INTERRUPTS.
Attributes
NUCLEUS RESIDENT, RE-ENTRANT
Operation
DMSITS -- WHEN CONTROL COMES HERE BY 'BALR' LINKAGE, THEN THE DOUBLE WORD RESERVED FOR THE SVC OLD PSW IS SET UP IN LOW CORE AS IF SVC 202 LINKAGE HAD OCCURRED, AND CONTROL DROPS THROUGH TO DMSITS1. DMSITS1 -- A SAVE AREA IS ALLOCATED, THE OLDPSW IS SAVED, AND ALL REGISTERS ARE SAVED. THE EXACT SVC TYPE IS DETERMINED, AND THE NAME OF THE APPROPRIATE NUCLEUS OR OR DISK-RESIDENT ROUTINE IS DETERMINED. (THE EXACT METHOD FOR DOING THIS IS DESCRIBED IN 'SVC HANDLING' SECTION OF THE CMS PROGRAM LOGIC MANUAL.) CONTROL IS PASSED TO THE 'CALLEE' ROUTINE. WHEN CONTROL RETURNS FROM THE APPROPRIATE 'CALLEE' ROUTINE, THEN REGISTERS ARE RESTORED TO THEIR VALUES WHEN THE ORIGINAL CALL WAS MADE (EXCEPT FOR REG 15 IN THE CASE OF CMS SVC CALLS). MODIFICATIONS TO THE ABOVE PROCEDURE MAY OCCUR. HERE ARE SOME OF THE WAYS THAT THAT CAN HAPPEN: IF A CALLEE FOR A CMS SVC GIVES AN ERROR RETURN, THE USER MUST BE EXPECTING ONE. IF HE IS NOT, THEN DMSITS CALLS DMSABN TO ABEND. IF SVCTRACE IS IN EFFECT, THEN DMSITS WILL CALL THE TRACE ROUTINE. DMSITSR -- RE-INITIALIZES THE SVC HANDLER WHEN ABEND RECOVERY OCCURS. THIS ROUTINE FREES ALL SAVE AREAS, AND INITIALIZES ALL POINTERS TO ZERO. DMSITSK -- THIS ROUTINE PERFORMS PROCESSING SPECIFIED BY THE 'DMSKEY' MACRO. IF 'NUCLEUS' IS SPECIFIED, THEN A KEY OF 0 IS INSERTED INTO THE OLDPSW. IF 'USER' IS SPECIFIED, THEN THEN A KEY OF X'E' IS INSERTED INTO THE OLDPSW. THERE IS A KEY STACK ASSOCIATED WITH EACH SYSTEM SAVE AREA, AND WHEN 'USER' OR 'NUCLEUS' ARE SPECIFIED, THEN THE OLD KEY IS SAVED IN THE KEY STACK. HOWEVER, THIS PROCESSING CAN BE AVOIDED BY SPECIFYING 'NOSTACK'. WHEN 'RESET' IS SPECIFIED, THEN THE TOP KEY FROM THE KEY STACK IS RE-INSERTED INTO THE OLDPSW. DMSITSXS -- PROCESSING ASSOCIATED WITH THE 'DMSEXS' MACRO. THE SPECIFIED INSTRUCTION IS EXECUTED WITH A ZERO PROTECTION KEY.
Calls to Other Routines
DMSMOD -- TO 'LOADMOD' A COMMAND, IF NECESSARY. DMSERR (CALLED BY 'DMSERR' MACRO) -- TO TYPE OUT ERROR MESSAGES DMSFREB (CALLED BY 'DMSFREE' AND 'DMSFRET' MACROS) -- TO ALLOCATE AND RELEASE SAVE AREAS. DMSABNGO -- TO ABEND, WHEN PROCESSING CANNOT CONTINUE. SVC 'CALLEE' ROUTINES: MANY, MANY NUCLEUS ROUTINES AND COMMANDS CAN BE CALLED BY DMSITS, DEPENDING UPON THE TYPE OF SVC CALL.