General Points
When a domain D attempts to run while its trap code isn't zero, an implicit call is made to another domain called D's domain keeper. The domain keeper is in a position to examine the cause of the problem. This call is normally an immediate consequence of setting the trap code.
The jump is: JUMP DKK(Atc;,,DK,EX) where:
EX is a restart key to the trapped domain.
{If C2 is a start key, the domain it designates acquires the capabilities of the trapped domain and must be completely trusted.}
The operation is completed, suppressed, or terminated, as indicated by POP.
The possible program-interruption exceptions and their interruption codes are:
2 Privileged-Operation
6 Specification
Another reason may be added: Bits 16 thru 23 of the data body of C4 {the PSW} are not zero. See (bigiaok).
8 Fixed-Point-Overflow
9 Fixed-Point-Divide
10 Decimal-Overflow
11 Decimal-Divide
12 Exponent-Overflow
13 Exponent-Underflow
14 Significance
15 Floating-Point-Divide
The instruction execution is completed.
TC0 = 3. The domain obeys an SVC and (bits 8 thru 17 of C4 are 00, or bits 8 thru 17 of C4 are 03 and the SVC code is not 253, 254, or 255).
The instruction length code {1 or 2} is placed in bit positions 5 and 6 of byte 3, with byte 2 and the rest of byte 3 set to zero.
The instruction execution is completed.
The unit of operation is nullified.
The unit of operation is nullified.
{arcane}Sub-code = 2: Bits 4 & 5 of an exit block are 10. The instruction execution is nullified.
Sub-code = 4: Invalid entry block format.
Sub-code = 6: invalid argument string length. See (p1,badargstringlength) and (p1,badargpagecount).
Sub-code = 8: parameter string called for in registers {(regparm)} but invalid parameter string specification for registers. Registers 4 and 5 fail to specify a parameter string that is entirely within the registers. R4+R5 exceeds 96.
Sub-code = 9: argument string specified as originating in registers {(regparm)} but invalid extent. Registers 2 and 3 don't specify an argument string that is entirely within the registers. R2+R3 exceeds 96.
Byte 4 = 2. BC mode PSW simulated {bit 8 of PSW is on} and one-bit at 12, 14 or 15 of simulated BC mode PSW. See (sm).
Byte 4 = 3. Bits 8 thru 17 of C4 are neither 00 nor 03 or bit 0 of C4 is 1.
SC = 5. The jump was to a gate key and the jumpee shares nodes with the jumper.
SC = 20. The jump was a return or fork to a primary key and the returnee's domain root is the jumper's general keys node or register node.
SC = 21. The jump was a return or fork to a primary key and the returnee's domain shares nodes with the jumper's domain and the returnee's domain root is distinct from the three nodes of the jumper.
SC = 36. The jump was to a domain key and the invoked domain's root is the jumper's general registers or general keys node.
SC = 37. The jump was to a domain key and the invoked domain shares nodes with the jumper's domain and the invoked domain's root is distinct from the three nodes of the jumper.
SC = 48. The jump was to a node key to the returnee's domain root and the order code was 30, 31, or 45, or the jump was to a domain key and the invoked domain's general keys node is the returnee's domain root, and the order code was 62 or 63.
SC = 49. The jump was to a node key to the returnee's general register node, and (16 <= the order code < 32 or order code = 45), or the jump was to a domain key and either {1} the invoked domain's root is the returnee's general register node and 32 <= order code < 48 or order code = 73, or {2} the invoked domain's general keys node is the returnee's general register node and 48 <= the order code < 64.
SC = 50. The jump was to a segment key and the segment node is the jumper's domain root or general registers node.
SC = 51. The jump was to the DOMAIN_TOOL with order code 1, 2 or 3 and the root node of the domain whose brand is to be checked is the jumper's general register node.
{The choice of 8 conflicts with PER.}
In the meantime, this section may serve either to guide the design of damaged node strategies or may suggest some other way of reporting damaged nodes.
Sub codes would be assigned during implementation. We list here the events that we think that we will be able to distinguish:
Damaged meters {see (badmeter)}.
Damaged segment nodes would presumably be reported as an erroneous memory reference with code 12, and then only if a segment keeper was not about to take the report.
If KVMA is active {bit 8 in PSW} and the logical and of the pending interrupt mask and the system mask is not zero then bit 3 of TCO is turned on.
A domain is said to be trapped when a nonzero trap code is introduced. {Any action that causes a nonzero data key to be placed in C5 will have the same effect.} {Since such an action by itself does not introduce a process into the domain, the implicit jump to the domain keeper will not follow by virtue of trapping the domain. If there is a process already in the domain the trap will occur. If a process enters the domain while the trap code is still not zero the process will trap before any instructions of the domain are executed.}
Normally the setting of the trap code by the kernel replaces DK(0). This is not always the case. Since a domain can take no actions other than to trap when the trap code is not zero, these situations occur only when one action causes two trap codes to be produced, or when a trap code is produced when there is no process in the domain.