Looking at my code:
The 31bit access call is
IHBOPLTX , +
(ABDPL, ..ABDPL +
=A(ADPLSACC), ..TYPE OF CALL: ACCESS STOR +
MY_ADPLPACC), ..ACCESS STORAGE PARM LIST +
MF=(E,PLIST)
L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
BASR R14,R15
The 64bit access call is:
IHBOPLTX , +
(ABDPL, ..ABDPL +
=A(ADPLSMAP), ..TYPE OF CALL: MAP SERVICE +
XMSP), ..ACCESS STORAGE PARM LIST +
MF=(E,PLIST)
L R15,ADPLSERV LOCATE IPCS SERVICE ROUTINE
BASR R14,R15
Formatting the request is left as an exercise for the OP
On Wed, 21 Sep 2022 15:49:21 -0500 David Janicek <[email protected]> wrote:
:>Hi all. I am new to this list but I have searched the archives for an answer
to my question already without any luck.
:>
:>I am responsible for maintaining an IBM IPCS VERBX (verb exit) that analyzes
our application dumps and points out any inconsistencies in it. We are in the
process of moving some of our data above the bar (ATB) and I need to update the
VERBX to analyze that data. Unfortunately the IBM doc has virtually nothing on
how to access 64bit storage in an IPCS dump via a VERBX. I searched the
internet and the only clue I found was a 7 year old post on this site by Don
Poitras. He listed a routine in C that would access 64bit (and 31bit) storage.
I have tried to mimic that code in assembler but I haven't gotten it to work
yet. I am posting my code at the end of this listing. My hope is that someone
will either point out the error of my ways or, instead, simply post their code
that does the same thing. When I attempt to access 64bit storage, I get the
following messages:
:>
:>Dump analysis will be incomplete.
:> XSSP passed by exit PLATFORM is not valid.
:> Equate Symbol record failed consistency check.
:>
:>Here's my code that I'm using. Thanks in advance for your time on this.
:>
:>
:>Access64BitBlock Entry ,
:>*
:> Lmg R2,R3,0(R1) -> storage address and length to get
:>*
:> Cli WS_Es64,0 have we initialized storage yet?
:> Jne Access64BitBlock100 Yes->Don't do it again
:>*
:> La R14,WS_Es64 Copy
:> La R15,WS_Es64$ skeleton
:> La R0,C_Es64 to
:> Lgr R1,R15 working
:> Mvcl R14,R0 storage
:>*
:> Mvc WS_Es64AST,=Al2(ZZZASTCV) CPU ASID
:> Lgf R0,WS_SSAsid Set owning
:> St R0,WS_Es64AS1 asid
:> Mvi WS_Es64DTY,ZZZDTYU Set as area
:>*
:> Mvc WS_Xs64(WS_Xs64$),C_Xs64 copy skeleton
:> Oi WS_Xs64PFL1,WS_Xs64BIT64 Indicate 64bit
:> Mvc WS_Xs64Code,=Al2(WS_Xs64Acc) set to access storage
:> Mvc WS_Xs64Modn,C_PlatFormVar
:> La R0,WS_Es64 Link them
:> St R0,WS_Xs64Esr together
:>*
:> CallFunc Function=StorageObtain, +
:> Param=4096, +
:> Mf=(E,WS_StorageObtainParms)
:> St R15,WS_Xs64Buf Save buffer address
:>*
:>Access64BitBlock100 Ds 0h
:> Stg R2,WS_Es64LAD Set address to obtain
:> Stg R3,WS_Es64DLE Set length to obtain
:>*
:> Sam31 , This call requires 31 bit amode
:> SysState Amode64=NO
:>*
:> Lg R4,WS_Abdpl@ -> IPCS parameter area
:> Using Abdpl,R4
:>*
:> L R15,AdplServ -> IPCS Service Routine
:> Call (15), go get the requested storage +
:> (Abdpl,=A(AdplSSym),WS_Xs64), +
:> Mf=(E,WS_P64Parms)
:>*
:> Sam64 , Get back in 64bit mode
:> SysState Amode64=YES
:> Drop R4
:>*
:> Ltr R15,R15 Did it work?
:> Llgt R15,WS_Xs64Buf -> returned storage
:> Jz Access64BitBlock Continue if successful
:> Sgr R15,R15 Indicate storage not found
:>Access64BitBlock900 Ds 0h
:>*
:> Exit ,
:>*
:>C_Es64 BlsrEssy Dsect=NO,ABITS=64
:>C_Xs64 BlsrXssp Dsect=NO
:>*
:> BeginWS ,
:>*
:> SysState Amode64=NO
:>WS_P64Parms Call ,(,,),Mf=L
:> SysState Amode64=YES
:>*
:>WS_Es64 BlsrEssy Dsect=NO,ABITS=64
:>WS_Es64$ Equ *-WS_Es64
:>WS_Xs64 BlsrXssp Dsect=NO
:>WS_Xs64$ Equ *-WS_Xs64
:>*
:> EndWS ,
:>
:>----------------------------------------------------------------------
:>For IBM-MAIN subscribe / signoff / archive access instructions,
:>send email to [email protected] with the message: INFO IBM-MAIN
--
Binyamin Dissen <[email protected]>
http://www.dissensoftware.com
Director, Dissen Software, Bar & Grill - Israel
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN