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

Reply via email to