Op Code (Hex) | Operand 1 | Operand 2 | ||
---|---|---|---|---|
03E2 | Receiver | Retrieve options |
Operand 1: Space pointer.
Operand 2: Character(1) scalar.
The data related to a particular occurrence of an exception is returned and placed in the specified space.
Operand 1 is a space pointer that identifies the receiver template. The template identified by operand 1 must be 16-byte aligned in the space.
The value of operand 2 specifies the type of exception handler for which the exception data is to be retrieved. The exception handler may be a branch point exception handler, an internal entry point exception handler, or an external entry point exception handler.
An exception state of thread invalid (hex 1602) exception is signaled to the invocation issuing the Retrieve Exception Data instruction if the retrieve option is not consistent with the thread's exception handling state. For example, the exception is signaled if the retrieve option specifies retrieve for internal entry point exception handler and the thread exception state indicates that an internal exception handler has not been invoked.
After an invocation has been destroyed, exception data associated with a signaled exception description within that invocation is lost.
The format of operand 1 for the materialization is as follows:
Offset | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||
0 | 0 |
| Template size |
| Char(8) | ||||||||
0 | 0 |
| Number of bytes provided for retrieval |
| Bin(4) | ||||||||
4 | 4 |
| Number of bytes available for retrieval |
| Bin(4) | ||||||||
8 | 8 |
| Exception identification |
| Char(2) | ||||||||
10 | A |
| Compare value length (maximum of 32 bytes) |
| Bin(2) | ||||||||
12 | C |
| Compare value |
| Char(32) | ||||||||
44 | 2C |
| Message reference key |
| Char(4) | ||||||||
48 | 30 |
| Exception specific data |
| Char(*) | ||||||||
* | * |
| Source invocation |
| Invocation pointer or Null | ||||||||
* | * |
| Target invocation |
| Invocation pointer | ||||||||
* | * |
| Source instruction address |
| UBin(2) | ||||||||
* | * |
| Target instruction address |
| UBin(2) | ||||||||
* | * |
| Machine-dependent data |
| Char(10) | ||||||||
* | * |
| --- End --- |
|
|
The first 4 bytes of the materialization identify the total number of bytes provided for retrieval of the exception data. This value is supplied as input to the instruction and is not modified by the instruction. A value of less than 8 causes the materialization length invalid (hex 3803) exception to be signaled.
The second 4 bytes of the materialization identify the total number of bytes available to be materialized. The instruction materializes as many bytes as can be contained in the area specified as the receiver. If the byte area identified by the receiver is greater than that required to contain the information requested, then the excess bytes are unchanged. No exceptions (other than the materialization length invalid (hex 3803) exception) are signaled in the event that the receiver contains insufficient area for the materialization.
The message reference key field returns the architected value that uniquely identifies the message in the process queue space.
The source invocation and source instruction address identify the invocation that caused the exception to be signaled. For machine exceptions, this invocation pointer identifies the invocation executing when the exception occurred. For user-signaled exceptions, this invocation pointer locates the invocation that executed the Signal Exception (SIGEXCP) instruction. The pointer will be null if the source invocation no longer exists at the time that this instruction is executed. The source instruction address field locates the instruction that caused the exception to be signaled. This field in a bound program invocation will be set to 0.
The target invocation and target instruction address identify the invocation that is the target of the exception. This invocation is the last invocation that was given the chance to handle the exception. For machine exceptions, the first target invocation is the invocation incurring the exception. For user-signaled exceptions, the Signal Exception (SIGEXCP) instruction may initially locate the current or any previous invocation. If the target invocation handles the exception by resignaling the exception, the immediately previous invocation is considered to be the target invocation. This may occur repetitively until no more prior invocations exist in the thread and the signaled program invocation entry is assigned a value of binary 0. If an invocation handles the exception in any manner other than resignaling or does not handle the exception, that invocation is considered to be the target.
The target instruction address field specifies the number of the instruction that is currently being executed in the target invocation.
The machine extends the area beyond the exception specific data area with binary 0's so that the pointers to program invocations are aligned on a 16 byte boundary.
The operand 2 values are defined as follows:
Offset | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Dec | Hex |
| Field Name |
| Data Type and Length | ||||||||||||||
0 | 0 |
| Retrieve options |
| Char(1) | ||||||||||||||
|
|
|
| ||||||||||||||||
1 | 1 |
| --- End --- |
|
|
Exception data is always available to the process default exception handler.
06 Addressing
08 Argument/Parameter
10 Damage Encountered
16 Exception Management
1C Machine-Dependent
20 Machine Support
22 Object Access
24 Pointer Specification
2E Resource Control Limit
32 Scalar Specification
36 Space Management
38 Template Specification
44 Protection Violation