Interruption types

You can specify interruptions 1-15 and 17 using either the SPIE or the ESPIE macro. Interruption 17 designates page faults and can be specified so that a user-written SPIE/ESPIE exit routine gets control before a supervisor routine when a problem state page fault occurs. The user-provided SPIE/ESPIE exit routine gets control in problem program state and in the key of the TCB when a page fault occurs for the program that issued the SPIE/ESPIE macro. The exit routine gets control in the addressing mode that was in effect when the SPIE or ESPIE macro was issued. (If a SPIE macro was issued this is 24-bit addressing mode.) The SPIE/ESPIE exit routine for interruption type 17 handles page faults at the task level. This includes all RBs executing under the task for which the SPIE/ESPIE was issued. The exit routine resolves page faults by invoking the paging supervisor. In order to specify interruption 17, your program must have APF authorization or be executing in system key (0-7).

A caller in supervisor state who issues the SPIE macro is abnormally terminated with a X‘30E’ abend completion code. A caller in supervisor state who issues the ESPIE macro is abnormally terminated with a 46D-18 abend completion-reason code. If the caller takes a page fault while in supervisor state, the exit routine does not get control even if a SPIE/ESPIE macro specifying interruption type 17 is in effect. Supervisor routines resolve the page fault and continue program processing without abending the caller.

If a program fault occurs while a SPIE or ESPIE that specifies interrupt type 17 is in effect, the SPIE/ESPIE exit routine receives control. If a page fault occurs during setup processing while referencing the PIE/PICA (for a SPIE) or the EPIE (for an ESPIE), the system handles the original page fault. In this case, the SPIE/ESPIE exit routine does not handle the original page fault because the system cannot provide the information that the exit routine needs. After the page fault is resolved, processing continues in the problem program.

There is another situation in which the exit routine might not get control when a page fault occurs. To use interruption type 17, you must place the PIE/PICA (for a SPIE macro), the EPIE (for an ESPIE macro), the SPIE/ESPIE program, and data areas in fixed storage. Page faults can occur after issuing the SPIE/ESPIE macro and before placing this information in fixed storage. If a page fault occurs at this point, the SPIE/ESPIE service routine performs set-up processing and, if it can reference the PIE/PICA (for SPIE) and the EPIE (for ESPIE), passes control to the exit routine. If the exit routine encounters a page fault, the paging supervisor resolves the page fault unless the routine is running disabled. A disabled page fault causes an 0C4 abend. Once the page fault is resolved, normal processing continues in the exit routine.

The ESPIE routines for interruption type 17 do not get control on data space faults. The ESPIE macro is not designed to be driven for disabled faults, segment or region faults, or cross memory faults (data space faults might be considered as a special case of cross memory faults because the faulted space is not the home or primary address space).