Invoking callable services from assembler routines

A Language Environment-conforming assembler routine called by C should not invoke a z/OS UNIX API.

The interface to a callable service is the same as the interface previously described for assembler routines. An example of calling the CEEGTST (Get Heap Storage) callable service is shown in Figure 1.

A X'80000000' placed in the last parameter address slot indicates that the fc (feedback code) parameter is omitted.

Figure 1. Sample invocation of a callable service from assembler
*
*   R12 = A(CAA)
*   R13 = DSA
*   This example is non-reentrant.
*
         LA   R1,PLIST
         L    R15,=V(CEEGTST)
         BALR R14,R15⋮
         PLIST    DS   0D
         DC   A(HEAP_ID)
         DC   A(SIZE)
         DC   A(ADDR)
         DC   A(X'80000000')
HEAP_ID  DC   F'0'                     Heap ID for the user
SIZE     DC   F'256'                   Size of storage to allocate
ADDR     DC   F'0'                     Address of allocated storage