Language Environment dynamic storage area

An AMODE 64 XPLINK DSA (Dynamic Storage Area) is described in Figure 1. In an XPLINK function, the currently active DSA is located by GPR4. However, GPR4 is "biased" by x'800' (2048) bytes. This bias needs to be added to the contents of GPR4 to get the actual start of the XPLINK register save area. XPLINK DSAs can be back-chained using the value of GPR4 in the register save area. However, GPR4 is only optionally saved. The correct way to find the caller's DSA is to add the size of the current DSA to its location.
Figure 1. Language Environment dynamic storage area – XPLINK format for AMODE 64 applications
Dynamic Storage Area – XPLINK Format for AMODE 64 applications
Note:
  1. CEEDSAHP_BIAS: This is the size of the bias between the actual value in the XPLINK stack register (GPR4) and the start of the DSA. This area is not usable by the current function. It will contain the DSAs of any called XPLINK functions.
  2. CEEDSAHP4T015: A called XPLINK function will only save the registers that might be altered during its execution.
  3. CEEDSAHP_ARGLIST: Area where argument list for called functions is built. Only parameters that are not passed in registers will be stored into the argument area.