++USERMOD(ZP60023) /* SUPPORT DAS AT THE TASK LEVEL */ . ++VER(Z038) FMID(FBB1221) PRE(UZ61148,UZ36571,UZ30139,UZ25668) /* PROBLEM DESCRIPTION: NO OPERATING SYSTEM SUPPORT FOR THE DUAL ADDRESS SPACE FACILITY. IN ORDER TO EXPLOIT THE DUAL ADDRESS SPACE FACILITY (DAS) APPLICATIONS MUST USE DISABLEMENT FOR SERIALIZATION AND MANAGE THE CONTENTS OF THE RELEVANT CONTROL REGISTERS. THIS IS NOT CONDUCIVE TO GOOD SYSTEM STABILITY, RELIABLITY AND PERFORMANCE. THIS USERMOD UPDATES THE PROGRAM CHECK FIRST LEVEL INTERRUPT HANDLER (PCFLIH) SUCH THAT IF A SPECIAL-OPERATION EXCEPTION IS CAUSED BY AN SSAR INSTRUCTION WHEN RUNNING UNDER A TASK, THE SPECIFIED SECONDARY ADDRESS SPACE NUMBER (SASN) IS VALIDATED, AND IF VALID IS SET UP TO BE THE TASK'S SECONDARY ADDRESS SPACE. THE PCFLIH STORES THE SECONDARY ASID IN THE PREVIOUSLY RESERVED FIELD TCBRV326. ALL TASKS CAN USE SSAR TO SET SASN=PASN. ALL TASKS CAN ISSUE SSAR WITH THE SPECIAL SASN VALUE OF ZERO WHICH CAUSES ALL DAS SETTINGS TO BE CLEARED FROM CONTROL REGISTERS. (SPECIFYING A SASN OF ZERO IS DIFFERENT FROM USING GENERAL PURPOSE REGISTER 0 IN THE SSAR INSTRUCTION.) SETTING THE SECONDARY ADDRESS SPACE TO ONE OTHER THAN THE CURRENT PRIMARY ADDRESS SPACE REQUIRES THAT THE SSAR INSTRUCTION IS EXECUTED IN SUPERVISOR STATE. THIS USERMOD ALSO CHANGES THE DISPATCHER TO RESTORE THE SECONDARY ASID OF A TASK EACH TIME IT IS DISPATCHED. THE DISPATCHER WILL RESET THE DAS ENVIRONMENT, AND REVALIDATE THE ASID STORED IN TCBRV326, AND IF FOUND TO BE VALID WILL SET THAT ASID AS THE TASK'S SECONDARY ASID BEFORE THE TASK RESUMES PROCESSING. THE ASID IS CONSIDERED VALID IF IT SPECIFIES AN ASSIGNED SWAPPED-IN ADDRESS SPACE. WHEN A SECONDARY ASID IS SET UP FOR A TASK BY THE PCFLIH, OR RESTORED BY THE DISPATCHER, THE SECONDARY ASN IS SET INTO CONTROL REGISTER 3, THE PRIMARY ASN IS SET INTO CONTROL REGISTER 4, THE SECONDARY SEGMENT TABLE ORIGIN AND LENGTH ARE SET INTO CONTROL REGISTER 7, AND THE EXTRACTION-AUTHORITY CONTROL AND THE SECONDARY-SPACE CONTROL BITS ARE SET ON IN CONTROL REGISTER 0. MANY NEW USEFUL INSTRUCTIONS ARE NOT SUPPORTED UNDER MVS 3.8. NUMEROUS NEW INSTRUCTIONS PROVIDE USEFUL FUNCTION AND ALLOW FOR MORE PRODUCTIVE PROGRAMMING PRACTICES, BUT THEY ARE NOT SUPPORTED UNDER SYSTEM/370. MANY OF THESE NEWER OPCODES PROVIDE PERFORMANCE BENEFITS, AND SO FOR THIS AND OTHER REASONS THEY ARE USED FREQUENTLY IN PROGRAMS WRITTEN RECENTLY. OFTEN THE ONLY BARRIER TO RUNNING SUCH PROGRAMS UNDER MVS 3.8J IS THE FACT THAT SOME OF THESE INSTRUCTIONS ARE IN THE PROGRAM AND THEY CANNOT BE EXECUTED UNDER SYSTEM/370. THIS USERMOD UPDATES THE PROGRAM CHECK FIRST LEVEL INTERRUPT HANDLER (PCFLIH) SUCH THAT IF AN OPERATION EXCEPTION OCCURS WHEN A SUPPORTED NEWER (THAN SYSTEM/370) INSTRUCTION IS ENCOUNTERED DURING PROGRAM EXECUTION WITH DAT ON, THE PCFLIH WILL USE SYSTEM/370 INSTRUCTIONS TO SIMULATE THE NEWER INSTRUCTION. THE SIMULATED INSTRUCTIONS WERE SELECTED ON THE BASIS THAT ANY OPERANDS ARE EITHER IMMEDIATE OR CONTAINED IN REGISTERS AND THEREFORE UNLIKELY TO CAUSE FURTHER PROGRAM INTERRUPTS. FURTHER, THE INTENT IS TO ALLOW PROGRAMS WRITTEN FOR 31-BIT ADDRESSING TO FUNCTION IN A 24-BIT ADDRESSING ENVIRONMENT, WHILE AT THE SAME TIME NOT GIVING ANY INDICATION OF 64-BIT ADDRESSING SUPPORT. THE PREVIOUSLY UNUSED BIT PSARV022 IN THE BYTE PSASUP4 IS NOW USED AS A PCFLIH INSTRUCTION SIMULATION RECURSION FLAG. THE SIMULATION OF THE FOLLOWING OPCODES IS NOW IMPLEMENTED: TAM - X'010B' - SETS PSW CC TO 0 (TO SHOW AMODE=24) SAM24 - X'010C' - EFFECTIVELY A NOPR SAM31 - X'010D' - EFFECTIVELY A NOPR BSM - X'0B' - BRANCH AND SET MODE BASSM - X'0C' - EFFECTIVELY A BASR IILH - X'A5_2' - INSERT IMMEDIATE (LOW HIGH) IILL - X'A5_3' - INSERT IMMEDIATE (LOW LOW) NILH - X'A5_6' - AND IMMEDIATE (LOW HIGH) NILL - X'A5_7' - AND IMMEDIATE (LOW LOW) OILH - X'A5_A' - OR IMMEDIATE (LOW HIGH) OILL - X'A5_B' - OR IMMEDIATE (LOW LOW) LLILH - X'A5_E' - LOAD LOGICAL IMMEDIATE (LOW HIGH) LLILL - X'A5_F' - LOAD LOGICAL IMMEDIATE (LOW LOW) TMH/TMLH - X'A7_0' - TEST UNDER MASK (LOW HIGH) TML/TMLL - X'A7_1' - TEST UNDER MASK (LOW LOW) BRC - X'A7_4' - BRANCH RELATIVE ON CONDITION BRAS - X'A7_5' - BRANCH RELATIVE AND SAVE BRCT - X'A7_6' - BRANCH RELATIVE ON COUNT LHI - X'A7_8' - LOAD HALFWORD IMMEDIATE AHI - X'A7_A' - ADD HALFWORD IMMEDIATE MHI - X'A7_C' - MULTIPLY HALFWORD IMMEDIATE CHI - X'A7_E' - COMPARE HALFWORD IMMEDIATE IPM - X'B222' - INSERT PROGRAM MASK LBR - X'B926' - LOAD BYTE (REGISTER) LLCR - X'B994' - LOAD LOGICAL CHARACTER (REGISTER) LLHR - X'B995' - LOAD LOGICAL HALFWORD (REGISTER) LARL - X'C0_0' - LOAD ADDRESS RELATIVE LONG BRCL - X'C0_4' - BRANCH RELATIVE ON CONDITION LONG BRASL - X'C0_5' - BRANCH RELATIVE AND SAVE LONG XILF - X'C0_7' - EXCLUSIVE OR IMMEDIATE (LOW FULLWORD) IILF - X'C0_9' - INSERT IMMEDIATE (LOW FULLWORD) NILF - X'C0_B' - AND IMMEDIATE (LOW FULLWORD) OILF - X'C0_D' - OR IMMEDIATE (LOW FULLWORD) LLILF - X'C0_F' - LOAD LOGICAL IMMEDIATE (LOW FULLWORD) AFI - X'C2_9' - ADD (FULLWORD) IMMEDIATE ALFI - X'C2_B' - ADD LOGICAL (FULLWORD) IMMEDIATE CFI - X'C2_D' - COMPARE (FULLWORD) IMMEDIATE CLFI - X'C2_F' - COMPARE LOGICAL (FULLWORD) IMMEDIATE SLFI - X'C2_5' - SUBTRACT LOGICAL (FULLWORD) IMMEDIATE SPECIAL CONDITIONS: ACTION: AN IPL MUST BE PERFORMED FOR THIS SYSMOD TO BECOME ACTIVE. DOC: SYSTEM ABEND 0D7 INDICATES THAT THE PC FLIH FOUND AN ADDRESS SPACE TO NOT BE BOTH ASSIGNED AND SWAPPED IN. THE VALUE OF GENERAL PURPOSE REGISTER 15 IS 1 IF THE PRIMARY ADDRESS SPACE WAS FOUND TO BE INVALID AFTER A PAGE FAULT IN THE SECONDARY ADDRESS SPACE WAS RESOLVED, AND 2 IF A PAGE- TRANSLATION EXCEPTION OCCURRED FOR AN INVALID SECONDARY ADDRESS SPACE. COMMENTS: PRYCROFT SIX P/L PUBLIC DOMAIN USERMOD FOR MVS 3.8 NUMBER 23. THE FOLLOWING MODULES AND/OR MACROS ARE AFFECTED BY THIS USERMOD: MODULES: IEAVEDS0 IEAVEPC IHAPSA IKJTCB */.