REQUEST=UNPROTECT option of IARV64

REQUEST=UNPROTECT requests that data within one or more memory objects be made modifiable.

The IARV64 REQUEST=UNPROTECT unprotects pages/segments within 64-Bit Private or 64-Bit Common memory objects. 64-bit fixed 2 GB private memory objects cannot be protected.

Environment

The requirements for the caller are:

Environmental factor Requirement
Minimum authorization: Problem state and PSW key 8-15.

The caller must have a PSW key of 0 or a PSW key that matches the storage to be unprotected.

The caller must be running in supervisor state or with PSW key 0-7 to use the ALETVALUE keyword.

Dispatchable unit mode: Task or SRB
Cross memory mode: Any PASN, any HASN, any SASN
AMODE: 31- or 64-bit
ASC mode: Primary or access register (AR)
Interrupt status: Enabled for I/O and external interrupts for 64-bit private. Enabled or disabled for I/O and external interrupts for 64-bit common storage.
Locks: You may hold the local lock for the target address space. If you hold the local lock, you may also hold the CMS lock. For disabled callers no spin locks higher than the RSM locks can be held.
Control parameters: Control parameters must be in the primary address space and can reside both below and above the bar.

Programming requirements

None

Restrictions

This macro supports multiple versions. Some keywords are unique to certain versions. See PLISTVER parameter description.

Input register information

Before issuing the IARV64 macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.

Output register information

When control returns to the caller, the GPRs contain:
Register
Contents
0
Reason code, if GPR 15 is non-zero
1
Used as a work register by the system
2-13
Unchanged
14
Used as a work register by the system
15
Return code
When control returns to the caller, the ARs contain:
Register
Contents
0-1
Used as work registers by the system
2-13
Unchanged
14-15
Used as work registers by the system

Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.

Performance implications

None

Syntax

The REQUEST=UNPROTECT option of the IARV64 macro is written as follows:

Syntax Description
   
   name name: symbol. Begin name in column 1.
   
One or more blanks must precede IARV64.
   
IARV64  
   
One or more blanks must follow IARV64.
   
REQUEST=UNPROTECT  
   
  ,RANGLIST=ranglist ranglist: RS-type address or address in register (2) - (12).
   
  ,ALETVALUE=aletvalue aletvalue: RS-type address or address in register (2) - (12).
  ,ALETVALUE=0 Default: ALETVALUE=0
  ,NUMRANGE=numrange numrange: RS-type address or address in register (2) - (12).
  ,NUMRANGE=1 Default: NUMRANGE=1
  ,AMOUNTSIZE=1MEG Default: AMOUNTSIZE=4K. AMOUNTSIZE=1MEG is the default when the data to be acted on is from a fixed 1 MB-page frames request. AMOUNTSIZE cannot be specified when the data to be acted on is from a fixed 2 GB-page frames request.
  ,AMOUNTSIZE=4K  
   
  ,RETCODE=retcode retcode: RS-type address or register (2) - (12).
   
  ,RSNCODE=rsncode rsncode: RS-type address or register (2) - (12).
   
  ,PLISTVER=IMPLIED_VERSION Default: PLISTVER=IMPLIED_VERSION
  ,PLISTVER=MAX  
  ,PLISTVER=0, 1, 2, 3, 4, 5  
   
  ,MF=S Default: MF=S
  ,MF=(L, list addr) list addr: RS-type address or register (1) - (12).
  ,MF=(L, list addr, attr)  
  ,MF=(L, list addr, 0D)  
   ,MF=(E, list addr)  
  ,MF=(E, list addr, COMPLETE)  
   ,MF=(M, list addr)  
  ,MF=(M ,list addr, COMPLETE)  
  ,MF=(M, list addr, NOCHECK)  
   

Parameters

The parameters are explained as follows:

name
A required parameter. REQUEST=UNPROTECT specifies that a range of virtual storage be made modifiable.
REQUEST=UNPROTECT
A required parameter. REQUEST=UNPROTECT specifies that a range of virtual storage be made modifiable.

Areas of the memory object that are in guard areas or hidden will not be affected.

,RANGLIST=ranglist
A required input parameter. The range list consists of a number of entries (as specified by NUMRANGE) where each entry is 16 bytes long. A description of the fields in each entry follows:
VSA
Denotes the starting address of the data to be acted on.

The address specified must be within a created memory object returned by GETSTOR or GETCOMMON.

The value must be on a segment (1M) boundary when either:
  • PAGEFRAMESIZE=1MEG|1M is specified, or
  • PAGEFRAMESIZE=MAX is specified and the address specified is backed by fixed 1M page frames.
The value must be on a region (2G) boundary when PAGEFRAMESIZE=2G is specified. Otherwise, the value must be on a page (4K) boundary.
Note: If the range includes addresses backed by pageable 1 MB-page frames, specify a value on a physical segment boundary. Otherwise, demotion of pageable 1 MB-page frames to pageable 4 KB-page frames could occur.

The length of this field is 8 bytes.

AMOUNT
Contains the number of 4K, 1M, or 2G pages to be acted on.

The number of 4K, 1M, or 2G pages specified starting with the specified VSA must lie within a single memory object.

The length of this field is 8 bytes.

The amount contains the number of 1M pages to be acted on when the specified VSA is backed by fixed large page frames (1M).

The amount contains the number of 2G pages to be acted on when the specified VSA is backed by fixed 2G page frames (2G).

Note: If the range includes addresses backed by pageable 1M page frames, specify a number of 4K pages in multiples of 256; otherwise, demotion of pageable 1M page frames to pageable 4K page frames could occur.
,AMOUNTSIZE=4K
,AMOUNTSIZE=1MEG
An optional input parameter that specifies how the AMOUNT value specified on the RANGLIST parameter is treated. The default value is AMOUNTSIZE=4K.

When the data to be acted on is from a fixed 1M page frames request (TYPE=FIXED and PAGEFRAMESIZE=1M is specified, or TYPE is not specified and PAGEFRAMESIZE=1MEG is specified, or PAGEFRAMESIZE=MAX is specified and the address specified is backed by fixed 1M page frames), the default is AMOUNTSIZE=1MEG. Only AMOUNTSIZE=1MEG can be specified.

When the data to be acted on is from a fixed 2G page frames request (TYPE=FIXED and PAGEFRAMESIZE=2G is specified), AMOUNTSIZE cannot be specified. The AMOUNT value specified on the RANGLIST parameter is treated as the number of 2G pages to be acted on.

4K
The AMOUNT value specified on the RANGLIST parameter is the number of 4K page frames to be acted on.
1MEG
The AMOUNT value specified on the RANGLIST parameter is the number of 1M page frames to be acted on.
,ALETVALUE=aletvalue
,ALETVALUE=0
An optional input parameter that indicates the ALET of the address space in which the virtual storage is to be unprotected.

The only supported values are 0 (primary) and 2 (home). The ALETVALUE parameter can be used only by callers running in supervisor state or with PSW key 0-7. The default is 0.

To code: Specify the RS-type address, or address in register (2)-(12), of a fullword field.

,NUMRANGE=numrange
,NUMRANGE=1
An optional input parameter that specifies the number of entries in the supplied range list.

The value specified must be no greater than 16. The default is 1.

,RETCODE=retcode
An optional output parameter into which the return code is to be copied from GPR 15.

To code: Specify the RS-type address of a fullword field, or register (2)-(12).

,RSNCODE=rsncode
An optional output parameter into which the reason code is to be copied from GPR 0.

To code: Specify the RS-type address of a fullword field, or register (2)-(12).

,PLISTVER=IMPLIED_VERSION
,PLISTVER=MAX
,PLISTVER=0, 1, 2, 3, 4, 5
An optional input parameter that specifies the version of the macro. PLISTVER determines which parameter list the system generates. PLISTVER is an optional input parameter on all forms of the macro, including the list form. When using PLISTVER, specify it on all macro forms used for a request and with the same value on all of the macro forms. The values are:
  • IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
  • MAX, if you want the parameter list to be the largest size currently possible. This size might grow from release to release and affect the amount of storage that your program needs.

    If you can tolerate the size change, you can always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.

  • 0, supports all parameters except those specifically referenced in higher versions.
  • 1, supports both the following parameters and parameters from version 0:
    • CONVERTSIZE64
    • CONVERTSTART
    • GUARDSIZE64
    • V64SHARED
  • 2, supports both the following parameters and parameters from version 0 and 1:
    • GETCOMMON
    • PAGEPROTECT
    • PAGEUNPROTECT
    • AMOUNTSIZE
    • DETACHFIXED
    • DOAUTHCHECKS
    • DUMP
    • DUMPPRIORITY
    • DUMPPROTOCOL
    • LOCALSYSAREA
    • MEMLIMIT
    • OPTIONVALUE
    • ORDER
    • OWNERASID
    • OWNERCOM
    • TYPE
    • UNLOCKED
    • USERTOKEN
    • V64COMMON
  • 3, supports both the following parameters and parameters from versions 0, 1, 2:
    • ATTRIBUTE
    • OWNERJOBNAME
    • TRACKINFO
  • 4, supports both the following parameter and parameters from versions 0, 1, 2, 3:
    • DMAPAGETABLE
  • 5, supports both the following parameters and parameters from versions 0, 1, 2, 3, 4:
    • UNITS
    • UNITSIZE
To code: Specify one of the following:
  • IMPLIED_VERSION
  • MAX
  • A decimal value of 0, 1, 2, 3, 4, or 5
,MF=S
,MF=(L,list addr)
,MF=(L,list addr,attr)
,MF=(L,list addr,0D)
,MF=(E,list addr)
,MF=(E,list addr,COMPLETE)
,MF=(E,list addr,NOCHECK)
An optional input parameter that specifies the macro form.

Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.

Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.

Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.

Use MF=M together with the list and execute forms of the macro for service routines that need to provide different options according to user-provided input. Use the list form to define a storage area; use the modify form to set the appropriate options; then use the execute form to call the service.

You can use the modify and execute forms in the following order:
  • Use MF=(M,list_addr,COMPLETE), specifying appropriate parameters, including all required ones.
  • Use MF=(M,list_addr,NOCHECK), specifying the parameters you want to change.
  • Use MF=(E,list_addr,NOCHECK), to execute the macro.
,list addr
The name of a storage area to contain the parameters. For MF=S and MF=E, this can be an RS-type address or an address in register (1)-(12).
,attr
An optional 1- to 60-character input string that you use to force boundary alignment of the parameter list. Use a value of 0F to force the parameter list to a word boundary, or 0D to force the parameter list to a doubleword boundary. If you do not code attr, the system provides a value of 0D.
,COMPLETE
Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.
NOCHECK
This parameter specifies that the system is not to check for required parameters and is not to supply defaults for omitted optional parameters.