Using a caller-provided save area

The contents of the caller-provided save area and the rules for using it differ whether the program is or is not changing bits 0–31 of the 64–bit GPRs or ARs. The differences can be summarized as affecting: how you save and restore register information for a program interface, how you pass information to the target program, and where the target program can place output information.

In all save areas, the second word (the word at offset 4) of each save area provides an indication of how the program that created the save area saved the caller's registers. It does not describe the contents of this save area. In the case where the program saves its registers in a 72-byte save area (mapped by the SAVER DSECT in macro IHASAVER), the second word contains the address of the previous save area. Because that previous save area was on a word or doubleword boundary, bit 31 of the address (and thus bit 31 of the second word) will be 0. In the case where another save area format was used, bit 31 of the second word will contain 1 due to the 4-character string that is to be placed there.