While our books certainly have their flaws, they tend to be pretty good
about identifying acceptable AMODEs.
CSRSI says
AMODE:   24- or 31-bit when using the CALL CSRSI form  (or csrsi in C),
31-bit when using an alternate form

If a service supports AMODE 24/31 only, it would only be upon specifically
stating so that it supported any parameter data above 2G.

I will also point out that the sequence
         IARV64 REQUEST=GETSTOR,SEGMENT==AD(MAXSIZE),
               ORIGIN=ORIGIN,MF=E,IARV64,COMPLETE)  *
         LG    R0,ORIGIN               Get Starting Address Of Memory
Object
         STG   R0,CSRSI_INFO@          Store Mem-Obj Address for CSRSI
         SYSSTATE AMODE64=YES,ARCHLVL=2
         L     R15,CSRSI@                       Load R15 with CSRSI
Address
         CALL  (R15),(CSRSI_TYPE,CSRSI_INFOLEN,CSRSI_INFO@,CSRSI_RC)

Can never be absolutely correct since it asserts that you are in AMODE 64
at the time of the CALL but, since there was no AMODE switch shown, you
were also in AMODE 64 at the time of the IARV64 yet had not identified so
via SYSSTATE. It is important that SYSSTATE be set correctly if invoking
just about any macro in AMODE 64.


Peter Relson
z/OS Core Technology Design

Reply via email to