Just to continue the experiment and confirm my conclusion, all I have to do
to get the below to "work" is remove the last MODESET:
MODESET KEY=NZERO Make sure we are in Key 8
MODESET MODE=PROB Allow SPKA 8
* *** MODESET KEY=ZERO Get access to CSA
SPKA X'80'(0) *** Total experiment ***
So I rest my case: a MODESET leaves you in a state where you can do any SPKA
you want so long as it is for the key you already are in.
Or, turning this from a complaint to the underlying question: if you had
code that was executed *very* frequently and needed to be in Key 0 briefly,
what would you do? Is there any way to avoid the SVC when returning to Key
8?
@Peter, @Jim -- if you're following this, I'm testing on V2R2 but could
readily try on V2R1 or V1R13.
Charles
-----Original Message-----
From: IBM Mainframe Discussion List [mailto:[email protected]] On
Behalf Of Charles Mills
Sent: Tuesday, December 13, 2016 6:48 AM
To: [email protected]
Subject: Re: Question on SPKA and Control Register 3
Okay, there is just no doubt in my mind that the use of MODESET precludes
the use of SPKA (and I'm not certain how to get around it other than to use
MODESET (with its attendant SVC) rather than SPKA). It's code that runs
millions of times per hour on multiple LPARs so I am trying to minimize
gratuitous overhead. Here is the exact failing code (unedited, and yes, I
know it's dumb -- I'm trying to illustrate the problem)
868 MODESET KEY=NZERO
Make sure we are in Key 8
869+* MACDATE Y-3 81030
00055C 871+ CNOP 0,4
00055C 4510 C564 00564 872+ BAL 1,*+8
000560 00000020 873+ DC
B'00000000000000000000000000100000'
000564 5810 1000 00000 874+ L 1,0(0,1)
000568 0A6B 875+ SVC 107
876 MODESET MODE=PROB
Allow SPKA 8
877+* MACDATE Y-3 81030
00056A 0700 879+ CNOP 0,4
00056C 4510 C574 00574 880+ BAL 1,*+8
000570 00000004 881+ DC
B'00000000000000000000000000000100'
000574 5810 1000 00000 882+ L 1,0(0,1)
000578 0A6B 883+ SVC 107
884 MODESET KEY=ZERO
Get access to CSA
885+* MACDATE Y-3 81030
00057A 0700 887+ CNOP 0,4
00057C 4510 C584 00584 888+ BAL 1,*+8
000580 00000030 889+ DC
B'00000000000000000000000000110000'
000584 5810 1000 00000 890+ L 1,0(0,1)
000588 0A6B 891+ SVC 107
00058A B20A 0080 00080 892 SPKA X'80'(0)
*** Total experiment ***
And here is the result (unedited):
CEE3202S The system detected a privileged-operation exception
(System Completion Code=0C2).
Location:
Program Unit: Entry: DIRECTOR Statement: Offset: +000000DA
Machine State:
ILC..... 0004 Interruption Code..... 0002
PSW..... 070D0400 A4991406
GPR0..... ********_00022798 GPR1..... ********_00000030 GPR2.....
********_00F898C4 GPR3..... ********_00000001
GPR4..... ********_2499A9F8 GPR5..... ********_25E98940 GPR6.....
********_2499CB38 GPR7..... ********_25E71528
GPR8..... ********_26093E70 GPR9..... ********_1C7AC560 GPR10....
********_000223BC GPR11.... ********_25E9336C
GPR12.... ********_24990E78 GPR13.... ********_000226C8 GPR14....
********_A4991388 GPR15.... ********_00000000
FPC...... 00000000
FPR0..... 45EA1145 00000000 FPR1..... 43169000 00000000
FPR2..... 4D5438B2 C38FA400 FPR3..... 35000000 00000000
FPR4..... 433E8000 00000000 FPR5..... 41A00000 00000000
FPR6..... 35000000 00000000 FPR7..... 33000000 00000000
FPR8..... 00000000 00000000 FPR9..... 00000000 00000000
FPR10.... 00000000 00000000 FPR11.... 00000000 00000000
FPR12.... 00000000 00000000 FPR13.... 00000000 00000000
FPR14.... 00000000 00000000 FPR15.... 00000000 00000000
Storage dump near condition, beginning at location: 249913F2
+000000 249913F2 07004510 C5840000 00305810 10000A6B B20A0080
A73E0002 A7840011 E32090F8 |....Ed.........,....x...xd..T..8|
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN