The problem described sounds not very interesting to me, because the
target area of the CSRSI service is simply moved above the bar.

What I would find much more interesting is: how would a true 64 bit program
call the CSRSI service by temporarily establishing AMODE 31?
The target areas of CSRSI or even all parms of CSRSI must be in areas
below the bar, but they must be filled before and examined after the
AMODE switch,
while in AMODE 64.

Is it possible to show with some lines of code, how this could be done?

Not that I would need it know, but I did such things some 20 years ago,
when
migrating from AMODE 24 to AMODE 31, and I would like to know how it
could be done today. For example, if we have a compiler on zLinux or
z/OS, that produces
true 64 bit code, and I would like to make the CSRSI service available
to it through
a small ASSEMBLER interface - is this possible?

CSRSI is needed to create UUIDs on zArch, IIRC - you need to extract the
LPAR number
to get a unique machine id.

Kind regards

Bernd



Am 20.12.2012 23:00, schrieb Edward Jaffe:
On 12/20/2012 12:36 PM, [email protected] wrote:
I have a program that loads CSRSI,  It obtains Storage for the
response area, and invokes CSRSI via a Call

I wanted to replace the STORAGE MACRO with IAVR64
So I believe the program could be re-wriiten as follows:
*
          LOAD  EP=CSRSI                  Load CSRSI Function
          ST    R0,CSRSI@                 Save Address Of CSRSI Function
*
          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)
          LTR   R15,R15                     Examine Return code
          BNZ   BAD_CSRSI                   No, Exit

Multiple issues here. If this service *could* be called in 64-bit
mode, then you
would probably need to use LGF with LINKINST=BASSM to invoke it and
probably
using PLIST8 for the parm list. But, that is all moot because the service
supports 24- and 31-bit addresses only.

--
Edward E Jaffe
Phoenix Software International, Inc
831 Parkview Drive North
El Segundo, CA 90245
http://www.phoenixsoftware.com/

Reply via email to