The general rule is this: Unless otherwise documented, the return code is 4 bytes wide. That means use of LTGR is incorrect in the general case..
Unless otherwise documented, the high halves of GPRs 0, 1, and 15 (and ARs 0, 1, 14 and 15) are unpredictable on return from any service. I am unaware of any exceptions to this. Not that I tend to be a slave to what is documented versus what is not, from the assembler services guide: 2.1 Saving the Calling Program's Registers Unless otherwise defined by the individual interface, the calling program should expect, upon return, that The low halves (Bits 32-63) of GPRs 2 through 13 are unchanged The high halves (Bits 0-31) of GPRs 2 through 14 are unchanged ARs 2 through 13 are unchanged FPRs 8 through 15 are unchanged; The Floating Point Control (FPC) Register is unchanged with the exception of two fields: the IEEE exception flags and the data exception code (DXC). When return information is provided in GPR 0, 1, and/or 15 (for example return and reason codes), only bits 32-63 of the register contain the returned value. Peter Relson z/OS Core Technology Design ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html