Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

RELM - Release memory

&pagelevel(3)&pagelevel

General

Application area:

Working with virtual memory; see "Working with virtual memory"

Macro type:

Type S, MF format 1: standard/L/E form; see "S-type macros"

Macro description

The RELM macro releases a contiguous area of the caller's class 6 memory. Memory is released in multiples of one page (4 Kb) . It is permissible to release memory space which has not previously been requested with REQM. Memory areas previously requested by various REQM macro calls can be released by means of a single RELM call if they are contiguous.

Macro format and description of operands

RELM

[{number / (r)}],{page / (r)}

[,PARMOD=24 / 31]

,MF=S / (E,...) / L

number
Number of pages (4 Kb) to be released.
Default value: number = 1.

(r)
Register containing “number”.

page
Page number of the first page (4 Kb) of the area to be released.

(r)
Register containing “page”.

MF=
For a general description of the MF operand, its operand values and any subsequent operands (e.g. for a prefix), see section “S-type macros”. The valid MF values are given at the start of the macro description under “Macro type” and are included in the macro format.

PARMOD=

Controls macro expansion. Either the 24-bit or the 31-bit interface is generated.
If PARMOD is not specified here, macro expansion is performed according to the specification for the GPARMOD macro or according to the default setting for the assembler (= 24-bit interface).

24
The 24-bit interface is generated. Data lists and instructions use 24-bit addresses (address space <= 16 Mb).

31
The 31-bit interface is generated. Data lists and instructions use 31-bit addresses (address space <= 2 Gb). Data lists start with the standard header.

Return information and error flags

During macro processing, register R1 contains the operand list address.

R15:

+---------------+
|   |   |   |   |
|0|0|0|0|0|0|a|a|
+---------------+

A return code relating to the execution of the RELM macro is transferred in register R15.

X'aa'

Meaning

X'00'

Memory space was released

X'04'

Function only partially executed.
The area to be released also contains nonrequested pages. The address of the first
nonrequested page is transferred in register R1. All pages in the area up to this address
were released, all pages after it are in the same state as before the RELM call

X'0C'

Function not executed.

  • Invalid operand list address

  • Error in operand list structure

  • The area to be released lies (partly) outside the class 6 memory

  • The area to be released (partly) overlaps a memory pool

  • The area to be released (partly) overlaps a FASTPAM ENVIRONMENT/ IOAREA
    POOL. It is not possible to release the area until the corresponding FASTPAM disable
    function has been executed

  • The area to be released (partly) overlaps a DIV window
    It is not possible to release the area until the correspondinng DIV unmap function has
    been executed

If the 31-bit interface is used:

  • In the event of errors in the initialization of the standard header, the return codes X'0001FFFF' / X'0003FFFF' / X'0004FFFF' are additionally transferred; see the table“Standard return codes” (Standard header).

  • No return codes are transferred in the standard header.

Examples

  1. Let the user program occupy pages 1 - 12.
    RELM 3,10 releases three pages starting at page 10, i.e. pages 10, 11 and 12.

  2. Let the user program occupy pages 1 - 6.
    RELM ,5 releases one page starting at page 5, i.e. page 5 is released.