z/OS Language Environment Programming Guide for 64-bit Virtual Addressing Mode
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


CELQPRLG macro — Generate a Language Environment-conforming amode 64 prolog

z/OS Language Environment Programming Guide for 64-bit Virtual Addressing Mode
SA38-0689-00

CELQPRLG provides a Language Environment-conforming prolog for AMODE 64 routines. The macro generates reentrant code.

You must use CELQPRLG in conjunction with the CELQEPLG macro.

CELQPRLG assumes that the registers contain what is described in Register conventions for AMODE 64 assembler routines.

Read syntax diagramSkip visual syntax diagram
Syntax

>>-name--CELQPRLG--+----------+--------------------------------->
                   '-ENTNAME=-'   

>--+----------------------------+--+--------------+------------->
   |              .-160 bytes-. |  '-,--PARMWRDS=-'   
   '-,--DSASIZE=--+-size------+-'                     

>--+---------------------------+--+-----------+----------------->
   |              .-8--------. |  '-,--PSECT=-'   
   '-,--BASEREG=--+-register-+-'                  

>--+-----------------------+--+---------------------+----------->
   '-,--PARMREG=--register-'  |             .-NO--. |   
                              '-,--EXPORT=--+-YES-+-'   

>--+---------------------------+--+------------------+---------><
   |                .-NO-----. |  '-,--GT2KSTK=--YES-'   
   '-,--FETCHABLE=--+-RENT---+-'                         
                    '-NORENT-'                           

name
If ENTNAME=epname is specified, then name is used as the name of the 64-bit XPLINK entry marker, else name is the name of the entry point and name#C is used as the name of the 64-bit XPLINK entry marker.
ENTNAME
The optional name of the entry point.
DSASIZE
The amount of space used by prolog code for the 64-bit XPLINK DSA (excluding the 2K bias), the largest parameter list built by this routine, and local automatic variables that are to be allocated for the duration of this routine. This value will be rounded up to a multiple of 32-bytes. If unspecified, the size of the automatic area is the size of a fixed portion of the 64-bit XPLINK DSA without any argument area or automatic variables (160 bytes). This is indicated by the label CEEDSAHPSZ (in the DSA mapping generated by the CEEDSA macro. See CEEDSA macro — Generate a DSA mapping for syntax), and is also the minimum required size.
PARMWRDS
Specifies the number of 4-byte words in the input parameter list. If this is omitted, then the routine will be treated as vararg.
BASEREG
Designates the required base register. The macro generates code needed for setting the value of the register and for establishing addressibility. The default is register 8. If register equals NONE, no code is generated for establishing addressibility.
PSECT
The name to be assigned to the AMODE 64 assembler routine PSECT area. The PSECT is used to establish this routines 64-bit XPLINK environment. For more information about the PSECT area, see HLASM Language Reference.
PARMREG
Specifies the register to hold the address of the argument area in the caller's save area.
EXPORT
Indicates whether this entry point will be exported. For EXPORT=NO this entry point can only be called from other routines that are bound into the same program object. For EXPORT=YES, this entry point will be marked as an exported DLL function. If you want the exported name to be a long name. mixed case, or both, follow the CELQPRLG macro with an ALIAS statement. For more information about on DLLs, including full sample assembler DLL routines, see Building and using AMODE 64 dynamic link libraries (DLLs).

For the extry point to be available as an exported DLL function, you must specify the DYNAM(DLL) binder option, and the resulting program object must reside in a PDSE.

FETCHABLE
If NO is specified, then this entry point is not be marked as fetchable. If RENT or NORENT is specified, then the CELQEPLG macro will generate either a reentrant or non-reentrant CELQFMAN structure, respectively, so that this entry point can be fetched.
GT2KSTK
If YES is specified, then an unconditional "large stack frame" prolog is used that checks for the 64-bit XPLINK stack floor in the LAA, instead of depending on the write-protected guard page. This parameter must be specified if DSASIZE is greater than 2048 (that is, the 2K stack bias).
Usage notes:
  1. The CELQPRLG macro automatically sets the module to AMODE 64 and RMODE ANY.
  2. Unless otherwise indicated, no register values should be expected to remain unchanged after the code generated by CELQPRLG has executed.
  3. When more than one CELQPRLG macro invocation occurs in an assembly, it is the programmer's responsibility to code DROP statements for the base registers set up by the previous invocation of the CELQPRLG macro.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014