|
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure PIOBK Paging I/O CCW packages.
PIOBK definitions common to all formats
0000 0 Signed 8 PIOINITL (4) Channel program initialization
and target record location area
0020 32 Signed 8 PIORDWR (0) - Read or write CCW -
0020 32 Bitstring 1 PIORDWRO CCW op code - x'86' ECKD Read
Data, x'85' ECKD Write Update
Record, x'42' FBA Read or x'41'
FBA Write.
..1. .... PIOFINIS X'20' Indicates that the PIOBK
has been processed. If PIORDWRO
equals: x'A6' for an ECKD read,
x'A5' for an ECKD write, x'62'
for an FBA read, or x'61' for an
FBA write, then the PIOBK has
been processed
..11 .... PIOINERR X'30' Indicates that the PIOBK
had an error that has been
processed. If PIORDWRO equals:
x'B6' for an ECKD read, x'B5' for
an ECKD write, x'72' for an FBA
read, or x'71' for an FBA write,
then an error has already been
processed for this PIOBK.
Notes : These PIOFINS and PIOINERR equates are neither bits
nor codes in the traditional sense. They are turned on
during interrupt processing (after the I/O for this PIOBK
has completed) in the top nibble of the opcode (which
never uses those bits) to indicate that the PIOBK has been
processed, or the PIOBK has an error that has been
processed, respectively. They are turned on and off with
OI and NI without changing the opcode itself (and
obviously, must be turned off before the PIOBK is used in
an active channel program).
0021 33 Address 1 PIORDWRF CCWCC+CCWIDA - READ or WRITE CCW
flag field Command Chaining plus
Indirect Data Addressing
0022 34 Signed 2 PIORDWRC '1000' - READ or WRITE CCW count
0024 36 Address 4 PIORDWRA - READ or WRITE CCW IDAW absolute
address.
0028 40 Signed 8 PIO3OR8 (0) - NOP or TIC CCW -
0028 40 Signed 4 PIO3OR8W (0) - 1st word of CCW that will be
changed with a TIC CCW.
0028 40 Bitstring 1 PIO3OR8O '03/08' - NOP or TIC op code
0029 41 Address 1 PIO3OR8F CCWUSPN / 0 - NOP or TIC flags
002A 42 Signed 2 PIO3OR8C '0000' - NOP or TIC count
002C 44 Address 4 PIO3OR8A - NOP or TIC address field
contains absolute address of the
starting CCW in the next entry.
0030 48 Bitstring 11 PIOMISC Miscellaneous data: - ECKD:
contains the IDAW used to locate
the target area in host absolute
storage - FBA: used to save the
calculated cylinder and page
numbers corresponding to the
block numbers used for the actual
I/O
003B 59 Bitstring 1 PIOFLAG Flags byte:
..1. .... PIOBeBu X'20' PIOBeBu (RAS) PIOBK being
built.
...1 .... PIOBADCC X'10' PIOBADCC Indicates a
condition code 1 or 2 was
received from a RSCH. When an
IFCC+CCC is received, we'll need
to restart this package.
.... .1.. PIOIOERR X'04' PIOIOERR Indicates an I/O
error has occurred for this CCW
package for an incorrect length
problem and a no record found on
a miss for N+1.
.... ..1. PIOMRPCI X'02' PIOMRPCI Indicates the
first record of multi read
requires a PCI.
.... ...1 PIOMULTI X'01' PIOMULTI Indicates a
multiple write or read CCW
package.
...1 .111 PIOALLFG PIOMRPCI+PIOIOERR+PIOMULTI+PIOBAD
CC PIOALLFG Used to reset flags
in PIOFLAG
003C 60 Address 4 PIOSVRTN Pointer to structure designating
interface back to original
caller: SW - deferred savearea
(SVGBK) SR - deferred savearea
(SVGBK) MW - Indirect IRA - may
be a full PIRBK or one word
containing caller's Interrupt
Return Address (IRA) backend
routine MR - If negative,
contains address of deferred
savearea (SVGBK) for task
deferred on faulted page,
otherwise, contains Indirect IRA,
as per MW case
0040 64 Signed 4 PIONEXT (0) Next sequential PIOBK. Caution
Extreme care must be used. The
PIOBKs are chained via the TICs.
Using PIONEXT may run off the
PIOBK array and should be used
with care.
PIOBK size contants.
00000040 PIObSIZE *-PIOBK Size of one PIOBK in
bytes.
00000008 PIOdwSIZE (PIObSIZE+7)/8 Size of one PIOBK
in double-words
PIOBK array size contants.
PIOARbSIZE determines the over all size of the PIOBK
array. It is a hard coded value. As aligned storage
is obtained, it should be either 4096 or 2048.
Want to make it bigger? Like 8192? Code will need
major change in HCPRDA/RDD to get contig frames, then
contig pages, then glue together (Like HCPSXPMC almost.)
00001000 PIOARbSIZE 4096 Total byte size of area for
all PIOBKs. (PIOBK array size).
00000200 PIOARdwSIZE PIOARbSIZE/8 Total doubleword
size of area for all PIOBKs.
Constants for finding a PIOBK or the PIOBK array.
00FFFFC0 PIOISOLB X'7FFFFFC0' Isolate the beginning
address of one PIOBK block.
Constants for other counts.
00000040 PIOCTPIO (PIOARbSIZE/PIObSIZE) Count of
PIOBKs that fit into a PIOBK
array.
0000003F PIOMAXAC PIOCTPIO-1 Maximum number of
PIOBKs that can be concurrently
active. This allows for the first
PIOBK that is the "target" of a
RSCH to simply have a TIC.
End of common PIOBK definitions
PIOBK definitions specifically for ECKD paging devices
0000 0 Bitstring 16 PIOLRDA - Locate Record Parameter This
area mapped by LRDA DSECT
0010 16 Signed 8 PIODEFX - Define Extent CCW -
0018 24 Signed 8 PIOLR - Locate Record CCW -
0030 48 Signed 8 PIOEIDAW - Format-2 IDAW (entire 4K)
PIOBK definitions specifically for FBA paging devices
0000 0 Bitstring 8 PIOLCDA - Locate CCW data area (mapped by
LCDA DSECT)
0008 8 Signed 8 PIOFIDAW - Format-2 IDAW (entire 4K)
0018 24 Signed 8 PIOLOC - Locate CCW
0030 48 Bitstring 2 * - Unused for FBA
0032 50 Bitstring 3 PIOFCCP (0) - CCP for block number
0032 50 Signed 2 PIOFCC - Cylinder number
0034 52 Bitstring 1 PIOFP - Page number
| |