|
Description
The DATOFF macro transfers control to a specified routine in the
DAT-OFF section of the nucleus.
The macro is restricted to key 0, supervisor state users, that
are enabled for DAT. Callers must include the IHAPSA mapping macro
with the DATOFF macro. Callers can be in primary or access register
(AR) address space control (ASC) mode. The macro destroys the contents
of general registers 0, 14, and 15.
Environment
These are the requirements for the caller:
Environmental factor |
Requirement |
---|
Minimum authorization: |
Supervisor state and key 0 |
Dispatchable unit mode: |
Task or SRB |
Cross memory mode: |
PASN=HASN=SASN |
AMODE: |
24-, 31- or 64-bit |
ASC mode: |
Primary or Access Register |
Interrupt status: |
None |
Locks: |
The caller may hold locks, but is not required
to hold any. |
Control parameters: |
Must be in the primary address space |
|
|
Programming requirements
The caller must include the IHAPSA mapping macro and must be enabled
for DAT.
Input register information
Before issuing the DATOFF 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 general purpose registers
(GPRs) contain: - Register
- Contents
- 0-1
- Used as work registers by the system
- 2-5
- May be used as work registers depending upon the index specified
- 6-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
Syntax
The DATOFF macro is written as follows:
Syntax |
Description |
---|
|
|
name |
name: Symbol. Begin name in
column 1. |
|
|
␢ |
One or more blanks must precede DATOFF. |
|
|
DATOFF |
|
|
|
␢ |
One or more blanks must follow DATOFF. |
|
|
index |
Note: See the description of the parameters
for the valid options. |
|
|
,RELATED=value |
value: Any valid macro keyword
specification. |
|
|
Parameters
The parameters are explained as follows:
- index
- Specifies the function that is to be given control in the DAT-OFF
section of the nucleus. The possible values for index,
along with the associated functions, are as follows:
- Index
- Function
- INDCDS
- 31-bit DAT-OFF compare double and swap
- INDMVCL0
- 31-bit general DAT-OFF move character long
- INDMVCLK
- 31-bit general DAT-OFF move character long in user key
- INDXC0
- 31-bit general DAT-OFF exclusive OR character
- INDCDS64
- 64-bit DAT-OFF compare double and swap
- INDMVCL64
- 64-bit general DAT-OFF move character long
- INDMVCLK64
- 64-bit general DAT-OFF move character long in user key
- INDXC64
- 64-bit general DAT-OFF exclusive OR character
- INDUSR1
- User-written 31-bit
- INDUSR2
- User-written 31-bit
- INDUSR3
- User-written 31-bit
- INDUSR4
- User-written 31-bit
- INDUSR641
- User-written 64-bit
- INDUSR642
- User-written 64-bit
- INDUSR643
- User-written 64-bit
- INDUSR644
- User-written 64-bit
For all system-defined index values (INDCDS,
INDMVCL0, INDMVCLK, and INDXC0), the user must supply information
in certain registers, as shown in the following lists. All register
values for INDCDS, INDMVCL0, INDMVCLK, and INDXC0 must be
31-bit addresses. All register values for INDCDS64, INDMVCL64,
INDMVCLK64, and INDXC64 must be 64-bit addresses. Callers must be
AMODE=64 to use INDCDS64, INDMVCL64, INDMVCLK64, or INDXC64.- INDCDS and INDCDS64
- Registers
- Information
- 2-3
- First 64-bit operand in even-odd pair of registers (target data)
- 4-5
- Third 64-bit operand in even-odd pair of registers (source data)
- 6
- Location of second operand, a doubleword in storage (target address)
Note: Register 6 contains a real address. If INCDS
is specified, then the low order 32 bits of GPR 6 form the real address
operand. If INCDS64 is specified, then all 64 bits of GPR6 form the
real address operand.
- INDMVCL0 and INDMVCL64
- Registers
- Information
- 2
- Location into which the characters are to be moved
- 3
- Length of the area into which the characters are to be moved
- 4
- Location of the area from which the characters are to be moved
- 5
- Length of the area from which the characters are to be moved
Note: Registers 2 and 4 contain real addresses.
- INDMVCLK and INDMVCLK64
- Registers
- Information
- 2
- Location into which the characters are to be moved
- 3
- Length of the area into which the characters are to be moved
- 4
- Location of the area from which the characters are to be moved
- 5
- Length of the area from which the characters are to be moved
- 6
- Bits 24-27 contain the PSW key in which the MVCL is to be executed
Note: Registers 2 and 4 contain real addresses.
- INDXC0 and INDXC64
- Registers
- Information
- 2
- Location of the results of exclusive OR character processing
- 3
- Bits 24-31 contain one less than the number of bytes on which
the exclusive OR is to be performed
- 4
- Location of the operand on which the exclusive OR is to be performed
Note: Registers 2 and 4 contain real addresses.
There are eight DAT-OFF indexes that users
can define. These indexes are INDUSR1, INDUSR2, INDUSR3, INDUSR4,
INDUSR641, INDUSR642, INDUSR643, and INDUSR644. User written
DAT-OFF functions are restricted as follows: - The user of the DATOFF macro instruction must be in key 0, supervisor
state, and executing with DAT turned on.
- The DAT-OFF function must have the attributes AMODE=31 and RMODE=ANY
to use INDUSR1, INDUSR2, INDUSR3, and INDUSR4.
- The DAT-OFF function must have the attributes AMODE=64 and RMODE=ANY
to use INDUSR641, INDUSR642, INDUSR643, and INDUSR644.
- The DAT-OFF function must preserve register 0 because register
0 contains the return address of the module that issued the DATOFF
macro.
- The DAT-OFF function must use branch instructions to link to other
DAT-OFF functions.
- The DAT-OFF function must use BSM 0,14 to return from INDUSR1,
INDUSR2, INDUSR3, and INDUSR4.
- The DAT-OFF function must return via BR 14 from INDUSR641, INDUSR642,
INDUSR643, and INDUSR644.
- ,RELATED=value
- Specifies information used to document the macro and to relate
the service performed to some corresponding service or function.
The format of the information specified can be any valid coding values
that the user chooses.
Return codes
When DATOFF macro returns control to your program, GPR 15 contains
a return code.
Table 1. Return Codes for the
DATOFF MacroHexadecimal Return Code |
Meaning and Action |
---|
00 |
Meaning: Successful completion. Action:
None.
|
04 |
Meaning: The first and second operands
specified on INDCDS were not equal (a condition code 1 on the CDS).
The first operand has been replaced by the second. Action:
Reissue the request.
|
|