Programming Interface Information: This information is NOT intended to be used as Programming Interfaces of z/VM.

#### FRMTE

Prolog

Control Block Contents
FRMTE DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### FRMTE Prolog

     NAME       : HCPFRMTE
     DESCRIPTION: FRAME TABLE ENTRY
     DSECT      : FRMTE
     FUNCTION   : A FRAME TABLE ENTRY DESCRIBES ONE 4K ALIGNED
                  BLOCK OF REAL STORAGE.
     LOCATED BY : PFXFTBL + (REAL FRAME ADDRESS / 4096 * 16)
                  VMDFR1ST  USER OWNED FRAME FORWARD ANCHOR
                  VMDFRLST  USER OWNED FRAME BACKWARD ANCHOR
                  FRMFPNT   FIELD OF HCPFRMTE FOR CHAINED FRAMES
                  FRMBPNT   FIELD OF HCPFRMTE FOR CHAINED FRAMES
                  FRMFRNXT  FREE STORAGE FRMTE FORWARD POINTER
                  SUBANCH   SUBBK FRMTE LIST ANCHOR
     CREATED BY : HCPIST    ENTRIES INITIALIZED AT STORAGE INIT
     DELETED BY : NONE
     NOTES      : THE FRMTES ARE CONTAINED IN THE FRAME TABLE.
                  SPACE FOR THE FRAME TABLE IS RESERVED AT
                  SYSGEN BY HCPGENER.
                  THE SPACE FOR THE FRAME TABLE IS NEVER RELEASED.
     Serialized :
       The following serialization discussion generally applies
       to FRMTEs with pageable FRMCSB0 frame codes (that is,
       frames where the FRMUSER x'80' bit is on in FRMCSB3).
       Such FRMTEs are referred to as "pageable FRMTEs" in this
       discussion.  Note that this includes most available frames
       (frames which have the FRMAVAIL bit set in FRMCSB3,
       whether they are actually on the global available list,
       one of the processor local available lists, or in some
       other "in transit" state), since the previous use frame
       codes are not changed while a frame is available.
       Pageable FRMTEs are serialized primarily by the four FRMTE
       serialization bits:  FRMAVAIL, FRMTRANS, FRMRELSE, and
       FRMSTEAL, all in FRMCSWRD FRMCSB3.  (The remaining four
       FRMCSB3 bits comprise FRMLTRCT, the frame last translated
       count.  Interactions between FRMLTRCT and the FRMCSB3
       serialization bits are covered below.) These four bits are
       essentially mutually exclusive spin locks.  Under normal
       circumstances, they may be turned on *ONLY* one at a time
       and *ONLY* by a word concurrent interlocked instruction
       such as CS or CDS.  That is, only *ONE* of the four bits
       is allowed to be on at any given time.  If any one of the
       four serialization bits is on, none of the other three
       serialization bits may be turned on until it goes off, and
       no changes to the rest of the FRMTE are allowed by any
       task other than the one that currently "owns" the FRMTE
       (that is, the task that turned the current serialization
       bit on).
       Note while the four FRMTE serialization bits are somewhat
       similar to normal spin locks, they are unique in that the
       usual "no loss of control while a spin lock is held" rule
       does *NOT* necessarily apply.  The reason for this
       exception is that FRMTEs may need to be left in these
       serialized states for long periods of time, so spin loops
       attempting to obtain pageable FRMTE serialization must
       only spin if the current state is known to be a "short
       term" state, and must take into consideration possible
       status changes in the remainder of FRMCSWRD (and possibly
       FRMPTE as well).
       Generally, only word concurrent interlocked instructions
       should be used to manipulate pageable FRMTEs' FRMCSB3.
       However, for performance reasons, there are special cases
       where a task which currently holds exclusive ownership of
       a FRMTE (by having turned one of the FRMCSB3 serialization
       bits on via CS or CDS) may release FRMTE serialization
       using a non-interlocked byte concurrent instruction, such
       as ST or NI.  This technique is *ABSOLUTELY* dependent on
       mutual exclusivity of the four FRMCSB3 serialization bits,
       and use of word concurrent interlocked instructions in
       setting them on.
       A FRMCSB3 serialization bit may *ONLY* be turned off
       (regardless whether the instruction used is interlocked or
       not) if it is known without any doubt to be on and held by
       the running task.  Turning an FRMCSB3 serialization bit
       which is already zero off *again* with a non-interlocked
       instruction such as NI "just in case" or to combine code
       paths is a dangerous exposure to lost FRMCSB3 updates.
       A FRMCSB3 serialization bit may *NOT* be turned off with a
       non-interlocked instruction such as NI if there is any
       possibility that any other task running on another
       processor might be attempting to increment or decrement
       FRMLTRCT (unless that other task will spin waiting for
       whatever FRMCSB3 serialization bit is currently on to be
       turned off).
       FRMLTRCT may only be updated with word concurrent
       interlocked instructions such as CS or CDS.  The CS|CDS
       *MUST* insist that any FRMCSB3 serialization bits *NOT
       held by the running task be zero before attempting the
       update.  FRMLTRCT may *NOT* be updated, even with CS or
       CDS, if any of the FRMCSB3 serialization bits could be
       changing state; either all four of the bits must be off,
       or one of them (typically FRMRELSE) *MUST* be on and held
       by the executing task across the FRMLTRCT change.  This
       ensures that the running task sees the *RESULT* of any NI
       used to turn off any FRMCSB3 serialization bit that might
       have been held by a task running on another processor, and
       therefore prevents interleaving of processor fetches and
       stores with the execution of the NI on the other processor
       (and the attendant risk of lost FRMCSB3 updates).  One
       additional requirement for FRMLTRCT is that when
       incrementing in the resident page software translation
       fast paths in HCPPTR (390) or HCPHTR (ESAME), the CS or
       CDS *MUST* require that FRMTRANS be off (that is, no other
       processor is performing long path translation for the
       frame); support for more than 14 host processors depends
       on this.
       Occasionally, FRMTEs which are not on any queue or
       associated with any active PTE are said to be under "task
       local" serialization.  In this case, the assumption is
       that no other task can get the address of the FRMTE, since
       no other control structures point to it.  However, it must
       *ALWAYS* be kept in mind that the frame table scan
       function in HCPALF can find *ANY* FRMTE, regardless of
       state, since it processes the entire frame table
       sequentially, looking for pageable FRMTEs which are in a
       "stealable" state.  Therefore, this "task local"
       serialization technique is only valid for non-pageable
       FRMTEs, where FRMCSB3 FRMUSER (x'80')is off.
       Also, it should be kept in mind that frame table scan
       approaches frame and page serialization backwards from
       most other code, in that it attempts to get the lowest
       level serialization first by (conditionally) obtaining
       FRMSTEAL, and working up (again, conditionally) from
       there.  Therefore, frame table scan must obtain all
       serialization conditionally, and be able to release all
       held serialization and abandon the current FRMTE, if any
       serialization conflict is encountered.  Otherwise,
       deadlocks with tasks obtain serialization in the normal
       "top down" fashion will result.
       This discussion not meant to be an exhaustive definition
       of FRMTE serialization.  There are special circumstances
       such as system initialization where these rules do not
       apply, and other non-pageable frame code types have their
       own serialization mechanisms depending on usage.  There
       are also some special pageable frame code types (such as
       MDC related FRMTEs and pageable page table FRMTEs) which
       are bound by these rules but have additional special
       serialization mechanisms as well.
       There may well be places in the existing code which do not
       abide by these rules and are not yet known to have caused
       any problems, but any such instances should be thoroughly
       investigated.  Any code that violates the FRMCSB3
       serialization bit mutual exclusivity rule for pageable
       FRMTEs while the system is in a normal running state is
       very likely in error, though, and should be addressed as
       soon as possible.
       The reason for all of this paranoia is that FRMTE
       serialization problems (such as lost FRMCSB3 updates) are
       notoriously difficult to debug.  FRMTE serialization
       errors usually lead to unpredictable (but invariably bad)
       results which typically do not cause external symptoms
       immediately.  By the time external symptoms arise, most
       in-storage evidence of the root cause has usually been
       overwritten.  Known typical symptoms of FRMTE
       serialization errors include incorrect FRMLTRCT values
       (causing LTR001 ABENDs or permanently and excessively
       last-translated "locked" pages), various loops and hangs,
       and MCW002 ABENDs, but other symptoms are quite possible.

#### FRMTE Control Block Content

#### FRMTE DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      FRMTE          FRAME TABLE ENTRY
    0000    0 Signed       4 FRMORGIN (0)   FRAME TABLE ENTRY ORIGIN
    0000    0 Signed       4 FRMFPNT        CHAINED FRAME FORWARD POINTER
    0004    4 Signed       4 FRMBPNT        CHAINED FRAME BACKWARD POINTER
    0008    8 Signed       4 FRMPTE         POINTER TO PAGE TABLE ENTRY. THE
                                            PTE ADDRESS IS THE SAME AS THE
                                            VPGTE ADDRESS FOR THE 4K BLOCK OF
                                            VIRTUAL STORAGE, BUT THE VPGTE IS
                                            A MORE CONVENIENT MAPPING. FRMPTE
                                            must be cleared whenever a frame
                                            is put on the global or local
                                            available list.
    000C   12 Signed       4 FRMCSWRD       FRAME STATUS BITS AND FLAGS. ALL
                                            BITS ARE CONTAINED IN A SINGLE
                                            FULLWORD SO THAT COMPARE AND SWAP
                                            CAN BE USED TO SERIALIZE FRAME
                                            STATE CHANGES.
         See the serialization section of this part prologue for a detailed
         discussion of FRMTE serialization rules.
         WARNING: Do *NOT* change any FRMTE serialization code without first
         *THOROUGHLY* understanding the FRMTE serialization rules
              00000010       FRMLENTH       *-FRMTE LENGTH OF FRAME TABLE
                                            ENTRY
    0010   16 Signed       4 FRMNEXT (0)    NEXT SEQUENTIAL ENTRY
         FRMBPNT IS SET BY HCPPTTFF (FRONT END OF FASTPATH PAGE FAULT PROCESSOR)
         TO INDICATE TO HCPPGXPL (BACK END OF FASTPATH PAGE PROCESSOR) WHAT TYPE
         OF PAGE FAULT OCCURED. FOR A PAGE FAULT SATISFIED BY PGIN OF AN XSTORE
         BLOCK FROM A NON-ALTERNATE PGMBK, THE XSTORE BLOCK NUMBER IS STORED IN
         FRMBPNT. IF THE VALUE IN FRMBNTP IS GREATER THAN X'FFFFFFFC', NO XSTORE
         BLOCK WAS INVOLVED AND FRMBFLAG WILL INDICATE THE TYPE OF PAGE FAULT
         THAT TOOK PLACE.
    0004    4 Bitstring    1 * (3)
    0007    7 Bitstring    1 FRMBFLAG       FASTPATH STATUS FLAG
              1111 11.1      FRMALTMV       X'FD' PAGE IN FRAME WAS MOVED
                                            FROM A PAGE FOUND IN AN ALTERNATE
                                            PGMBK
              1111 111.      FRMALTPG       X'FE' PAGE IN FRAME WAS PGIN'D
                                            FROM AN XSTORE BLOCK FOUND IN AN
                                            ALTERNATE PGMBK
              1111 1111      FRMFTPF        X'FF' PAGE IN FRAME WAS CLEARED
                                            TO SATISFY A FIRST TIME PAGE
                                            FAULT
         THESE BITS ARE STATIC FRAME FLAG BITS
         Redefinition for Minidisk Cache (FTC).
    0000    0 Signed       4 *              Not redefined for MDC, original
                                            field name, FRMFPNT, used
    0004    4 Signed       2 FRMTCSTE       Offset within MDC segment table
                                            to the SEGTE that this segment
                                            represents (Page table pages
                                            only)
    0006    6 Bitstring    1 FRMPSCT        Count of free PTE sets. Used in
                                            garbage collection only. (Page
                                            table pages only and must be
                                            initialized to 0)
    0007    7 Bitstring    1 FRMASSEL       Address space selector bits
              11.. ....      TCHASPAC       X'C0' These bits identify the
                                            address space used for caching
                                            Note: TCMALMSK and TCMALSHF
                                            depend on these bits
              ..11 1111      TCHIXMSK       X'3F' Bits to hold DPSBK index
                                            See also TCMIXMSK.
    0008    8 Signed       4 FRMSTO         STO for this address space
                                            (Segment table pages only)
    000C   12 Signed       4 *              May not be redefined for use in
                                            any way by MDC. Original field
                                            name, FRMCSWRD, and
                                            subdefinitions are used.
    0008    8 Signed       2 FRMPS1ST       First PTE set queued on frame for
                                            MDC garbage collection. (Page
                                            table pages only. Must be
                                            initialized to 0 when frame is
                                            allocated as a page table.)
    000A   10 Signed       2 FRMPSLST       Last PTE set queued on frame for
                                            MDC garbage collection. (Page
                                            table pages only. Must be
                                            initialized to 0 when frame is
                                            allocated as a page table.)
    0008    8 Signed       4 FRMDCKEY       MDC hash key here for MDC frames
         End of redefinition for Minidisk Cache (FTC).
         The codes that include the x'01' in their definition are a function of
         the FRMCP bit and are considered to be CP frames. Only frames with
         FRMCP bit on are included in a CP dump. An exception is VDISK frames,
         identified by frame code x'C3' (FRMSUTIL + x'40'), which are CP System
         Utility address space frames, and are CP owned and managed, but contain
         user data, and are therefore *NOT* included in CP dumps.
         The codes that include the X'02' in their definition are a function of
         the FRMDS bit and are considered to be data space frames. FRMDS bit is
         only allowed to be used to combine with FRMUSER or FRMSUSER and FRMCP
         to form FRMDTSP or FRMSUTIL.
         USER FRAMES ARE ASSOCIATED WITH EACH OTHER BY THE X'80' BIT.
         FRMPPGM IS IDENTIFIED BY THE X'80' BIT AS PAGEABLE
         FRMNPGM AND FRMPPGM ARE ASSOCIATED WITH EACH OTHER BY THE X'50' BITS.
         FREE STORAGE FRAMES ARE ASSOCIATED WITH EACH OTHER BY THE X'60' BITS.
         Notes : Any new frame code that contains the X'61' bits must be a type
         of free storage frame. There are places in the system that check for
         the X'61' bits to determine whether or not a frame is a free storage
         frame.
         All Mini-Disk Cache frame codes have the X'08' bit set (Notes : other
         frames codes that are not MDC may also use the x'08' bit). FRMFTADD is
         identified as pageable by the X'80' bit.
         The code X'FF' is never a valid frame usage code in FRMCSB0. FRMNEVER
         is available to test whether a value is a frame usage code or not. For
         example, whether a parameter passed in SAVER2B3 is a frame usage code
         or not.
    000C   12 Bitstring    1 FRMCSB0        COMPARE AND SWAP WORD BYTE 0.
                                            COMPARE AND SWAP NOT NECESSARILY
                                            REQUIRED TO ALTER THESE BITS.
              00000005       FRMNOTI        X'05' Frame is not initialized.
                                            TB/SSKE/ISKE has not been issued
                                            against this frame.
              00000009       FRMFTTBL       X'09' Frame used for MDC segment
                                            or page table.
              0000000D       FRMMDCHT       X'0D' Frame used for MDC hash
                                            table.
              00000010       FRMOFFLN       X'10' FRAME IS OFF-LINE AND
                                            UNAVAILABLE
              00000040       FRMVR          X'40' VIRTUAL = REAL USER FRAME
              00000051       FRMNPGM        X'51' Frame is a non-pageable
                                            pgmbk .*
              00000051       FRMNPGM1       FRMNPGM First frame of an ESAME
                                            non-pageable PGMBK
              00000055       FRMNPGM2       X'55' Second fame of and ESAME
                                            non-pageable PGMBK .* SAVE AREA
                                            FRAME
              00000063       FRMFRVR        X'63' FRAME IN USE FOR V=R FREE
                                            STORAGE
              00000065       FRMFRVM        X'65' FRAME USED FOR USER VMDBK
                                            FREE Note that if the first
                                            (lowest address) block in the
                                            frame is not available (that is,
                                            is not on the FRMCHAIN chain of
                                            available blocks and does not
                                            have an active free storage
                                            header), it may be an active
                                            segment table.
              00000067       FRMFRSY        X'67' FRAME USED FOR SYSTEM FREE
              00000069       FRMAFS         X'69' FRAME USED FOR ALIGNED FREE
                                            STORAGE
              0000006B       FRMVCB         X'6B' FRAME USED FOR VERIFIABLE
                                            CONTROL BLOCK FREE STORAGE
              0000006F       FRMPERSY       X'6F' Frame used for PERSYS
                                            (Persistent SYSPERM) free storage
              00000082       FRMDTSP        X'82' Frame used for a user's
                                            data space page
              00000083       FRMSUTIL       X'83' FRAME USED FOR CP UTILITY
                                            ADDRESS SPACE PAGE
              00000088       FRMFTADD       X'88' Frame is part of the MDC
                                            address space. It contains user
                                            data.
              000000C3       FRMSVDSK       X'C3' Frame used for VDISK System
                                            Utility address space page
              000000D1       FRMPPGM        X'D1' Frame is a pageable PGMBK
                                            .*
              000000D1       FRMPPGM1       FRMPPGM First frame of an ESAME
                                            pageable PGMBK
              000000D5       FRMPPGM2       X'D5' Second fame of and ESAME
                                            pageable PGMBK .*
              0000007D       FRMPDISO       X'7D' Isolate FRMUSER and FRMDTSP
                                            fields of FRMCSB0. This is done
                                            to allow code to test, for either
                                            FRMUSER *or* FRMDTSP being on
                                            with one instruction.
              000000FF       FRMNEVER       X'FF' Equate to reserve a value
                                            which will never be a valid frame
                                            usage code.
              00000001       FRMCP          X'01' FRAME IN USE BY CONTROL
                                            PROGRAM
              00000021       FRMTRACE       X'21' CP TRACE TABLE FRAME
              00000031       FRMPRFX        X'31' PREFIX PAGE FRAME
              00000061       FRMFREE        X'61' FRAME USED FOR FREE STORAGE
                                            OR SAVE AREA FRAME
              00000080       FRMUSER        X'80' FRAME USED AS USER PAGE
              00000081       FRMSUSER       X'81' IN USE AS SYSTEM VIRTUAL
                                            PAGE
              000001FD       FREMX          509 Maximum number of
                                            double-words . that can be
                                            obtained without . requiring
                                            full-page request. . This value
                                            should be the . same as that
                                            calculated and . stored in
                                            HCPFREMX.
              00000FE8       FREMXB         FREMX*8 Maximum number of bytes
                                            that can . be obtained without .
                                            requiring full-page request.
         THESE CODES ARE PRIMARILY STATIC FRAME USE CODES
         THE FOLLOWING FRAMES CAN BE STOLEN BY THE STEAL TASK: FRMUSER - BOTH
         PRIVATE AND SHARED FRAMES. FRMDTSP - Data space frames (private and
         shared). FRMSUSER - SYSTEM USED FRAMES. FRMSUTIL - SYSTEM UTILITY
         FRAMES. FRMPPGM - PAGEABLE PGMBK BLOCKS. The following frames can be
         stolen by the Mini-Disk Cache (MDC) steal task: FRMFTADD - Mini-Disk
         Cache address space pages. ALL THE REST CANNOT BE STOLEN.
    000D   13 Bitstring    1 FRMCSB1        COMPARE AND SWAP WORD BYTE 1.
                                            COMPARE AND SWAP NOT NECESSARILY
                                            REQUIRED TO ALTER THESE BITS.
              1... ....      FRMLOCKD       X'80' FRAME IS LOCKED IN REAL
                                            STORAGE (FRMLCNT IS GREATER THAN
                                            ZERO)
              .1.. ....      FRMCPLOK       X'40' FRAME LOCKED BY CP LOCK
                                            COMMAND (FRAME IS PART OF CP
                                            NUCLEUS)
              ..1. ....      FRMOWNED       X'20' FRAME IS ON A USER OWNED
                                            LIST
              ...1 ....      FRMSHARE       X'10' FRAME IS SHARED STORAGE
                                            FRAME
              .... 1...      FRMRONLY       X'08' Frame is a read only frame
                                            (e.g., the frame is being used to
                                            back a read only page, PAGPROT
                                            should be set in the associated
                                            PTE pointed to by FRMPTE)
              .... ..1.      FRMONQUE       X'02' FRAME IS CURRENTLY ON A
                                            QUEUE OR LIST. CHECK THE FRAME
                                            CODE TO DETERMINE WHAT QUEUE THE
                                            FRAME IS ON. FRMFRSY - THE SYSTEM
                                            FREE STORAGE FRAMES QUEUE.
                                            FRMFRVM - THE VMDBK FREE STORAGE
                                            FRAMES QUEUE. FRMPPGM - THE
                                            DEFERRED PGMBK PAGING LIST OR THE
                                            PAGED PGMBK AGING LIST FRMNPGM -
                                            THE LIST OF FRMTE'S CONTAINING
                                            PREVIOUSLY DEALLOCATED PTRM PTE'S
                                            BELOW CURRENT POINTER.
              .... ...1      FRMERROR       X'01' FRAME IS IN ERROR (STORAGE
                                            CHECK)
         THESE BITS ARE PRIMARILY STATIC FRAME FLAG BITS
    000E   14 Bitstring    1 FRMCSB2        COMPARE AND SWAP WORD BYTE 2.
                                            COMPARE AND SWAP NOT NECESSARILY
                                            REQUIRED TO ALTER THESE BITS.
              1... ....      FRMFXASA       X'80' Indicates PTE associated
                                            with this FRMTE has a fixed ASA.
                                            This flag is used by slot alloc
                                            (HCPPGT) to keep track of which
                                            FRMTEs need ASAs.
              ..1. ....      FRMRFRSH       X'20' Frame data is invalid. The
                                            frame must be refreshed before
                                            being used.
              .... ...1      FRMLAVL        X'01' FRAME RESIDES ON LOCAL
                                            AVAILABLE LIST. THIS BIT CAN ONLY
                                            BE ON FOR FRAMES MARKED AS
                                            AVAILABLE (FRMAVAIL BIT IS ON.)
                                            FRAMES RESIDE ON THE GLOBAL
                                            AVAILABLE LIST WHEN THE FRMAVAIL
                                            BIT IS ON AND THE FRMLAVL BIT IS
                                            OFF.
         THESE BITS DENOTE DYNAMIC FRAME STATES
         FRMCSB3 FRMTE serialization byte. Contains the four mutually exclusive
         FRMTE serialization bits and also the four bit frame last translated
         count.
         See the serialization section of this part prologue for a detailed
         discussion of FRMTE serialization rules.
         WARNING: Do *NOT* change any FRMTE serialization code without first
         *THOROUGHLY* understanding the FRMTE serialization
         rules!!!!!!!!!!!!!!!!!!!
    000F   15 Bitstring    1 FRMCSB3        COMPARE AND SWAP WORD BYTE 3.
              1... ....      FRMAVAIL       X'80' Frame is on the global
                                            available list, local available
                                            list, or the processor-local
                                            processed list. FRMPTE must be
                                            cleared and FRMAVAIL must be set
                                            to one when a frame is on the
                                            global available list. FRMPTE
                                            must be cleared plus FRMAVAIL,
                                            FRMLAVAL, and FRMUSER must be set
                                            to one when a frame is on the
                                            local available list. FRMPTE must
                                            be non-zero plus FRMAVAIL,
                                            FRMLAVL, and FRMUSER must be set
                                            to one when a frame is on the
                                            processor local processed list.
              .1.. ....      FRMTRANS       X'40' FRAME IS BEING TRANSLATED
              ..1. ....      FRMRELSE       X'20' FRAME IS BEING RELEASED
              ...1 ....      FRMSTEAL       X'10' FRAME IS BEING STOLEN NOTE.
                                            THIS STATE (FRMSTEAL) IS
                                            SOMETIMES USED IN LIEU OF
                                            FRMLOCKD IN SITUATIONS WHERE IT
                                            IS NOT FEASABLE TO USE THE LOCKED
                                            FRAME INTERFACE. AN EXAMPLE IS
                                            HCPPAF SAVING PAGES ON BEHALF OF
                                            A GUEST REQUEST.
              .... 1111      FRMLTRCT       X'0F' Frame last translated
                                            count. These four bits are the
                                            count of CPUs which have this
                                            FRMTE as last translated. If any
                                            of these bits are one, the frame
                                            cannot be stolen. This equate is
                                            used as a mask to isolate the 4
                                            bit frame last translated count.
                                            The maximum value (currently 14)
                                            of this count represents the
                                            maximum number of CPUs on which a
                                            given frame may be concurrently
                                            last translated, but does *NOT
                                            constitute an upper limit on the
                                            number of concurrently online
                                            CPUs supported. FRMLTRCT can only
                                            be non-zero in FRMTEs which
                                            represent frames below the 2G
                                            line (addressable via 31 bit
                                            addresses) as we never allow
                                            manual translation of pages to
                                            frames above the 2G line; all
                                            host real or absolute addresses
                                            returned by manual translation
                                            are 31 bit addresses (below 2G).
                                            FRMLTRCT for an architecturally
                                            attached frame (pointed to by a a
                                            valid and attached PTE) is
                                            maintained ONLY via interlocked
                                            instructions such as CS or CDS;
                                            any task which is updating
                                            FRMLTRCT must require either that
                                            all of the four FRMCSB3
                                            serialization bits (FRMAVAIL,
                                            FRMTRANS, FRMRELSE, FRMSTEAL) be
                                            off and stay off, or that one and
                                            only of them, if known to be held
                                            by the current task (typically
                                            FRMRELSE) is on and stays on.
                                            When the resident page software
                                            translation fast paths in HCPPTR
                                            (390) or HCPHTR (ESAME) increment
                                            FRMLTRCT, there is a further
                                            requirement that FRMTRANS must be
                                            off and stay off (support for
                                            more than 14 host processors
                                            dependends on this).
              .... 1...      FRMLTRHI       X'08' High order bit of the frame
                                            last translated count. Used in
                                            masks when incrementing FRMLTRCT
                                            to take longer path for FRMTLRCT
                                            values greater than 7 (b'0111')
              .... 111.      FRMLTRMX       X'0E' Maximum allowable value of
                                            the frame last translated count.
                                            Used when incrementing FRMLTRCT,
                                            in longer path. END OF DEFINITION
                                            FOR FRAME TABLE ENTRIES
         THESE BITS ARE USED TO SERIALIZE FRAME STATE CHANGES
         REDEFINITION FOR FRAMES THAT ARE NOT CHAINED.
    0000    0 Signed       4 FRMID          4 CHARACTER IDENTIFIER
                                            IDENTIFIERS USED IN FRMID THESE
                                            IDENTIFIERS ARE FOR VISUAL
                                            RECOGNITION AND ARE NOT INTENDED
                                            TO BE USED AS FLAGS. '*CP*' FRAME
                                            IN USE BY CONTROL PROGRAM 'TRAC'
                                            CP TRACE TABLE PAGE 'FREE' FRAME
                                            IN USE FOR FREE STORAGE 'SAVE'
                                            FRAME IN USE BY SAVE AREA MANAGER
                                            '*VR*' VIRTUAL = REAL USER FRAME
                                            'FRVR' FRAME IN USE FOR V=R FREE
                                            STORAGE 'OFLN' FRAME IS OFF-LINE
                                            AND UNAVAILABLE 'PRFX' PREFIX
                                            PAGE FRAME ' ' LOCKED USER FRAME
                                            'PPGM' PAGEABLE PGMBK 'NPGM'
                                            NON-PAGEABLE PGMBK 'AFS ' ALIGNED
                                            FREE STORAGE 'VCB ' VERIFIABLE
                                            CONTROL BLOCK 'FTBL' Frame Table
                                            frame '*RFT' Host Region First
                                            Table frame '*RST' Host Region
                                            Second Table frame '*RTT' Host
                                            Region Third Table frame '*SEG'
                                            Host Segment Table frame
         Eyecatchers *RTF, *RST, *RTT, and *SEG are only used in the ESAME build
         of CP.
         Note that FRMCSB0 still == FRMCP for FRMTEs marked with *RTF, *RTS,
         *RTT, and *SEG eyecatchers
    0004    4 Signed       4 FRMLKCNT       FRAME LOCK COUNT
    0008    8 Signed       4 *
    000C   12 Signed       4 *              FRMCSWRD (FLAGS AND STATUS BITS)
         REDEFINITION FOR FREE STORAGE FRAMES.
    0000    0 Signed       4 FRMFRNXT       NEXT FRMTE WITH AVAILABLE BLOCKS
    0004    4 Signed       2 FRMDHTOD       TOD TIME STAMP (SECS)
    0004    4 Signed       2 FRMVMFRG       FRAGMENT SIZE WHEN USED BY FREVM
    0006    6 Signed       2 FRMDWUSE       DOUBLE WORDS OF STORAGE IN USE
    0008    8 Address      4 FRMCHN         POINTER TO FIRST FREE STORAGE
                                            AVAILABLE BLOCK IN THIS FRAME.
         THIS FIELD IS ALSO USED WHEN CONTIGUOUS FRAMES ARE ALLOCATED AND
         RELEASED BY HCPPTEMF AND HCPPTECR RESPECTIVELY. WHEN USED FOR THIS
         REASON, FRMCHN WILL CONTAIN A NUMBER INDICATING THE TOTAL NUMBER OF
         CONTIGUOUS FRAMES IN A CONTIGUOUS SET (FROM LOWEST TO HIGHEST FRMTE
         ADDRESS.) An allocated single frame may have a FRMCHN value of zero
         (indicating it was allocated via HCPPTFGF) or one (indicating it was
         allocated via HCPPTEMF).
         ALSO, THE LEFT-MOST 2 BYTES OF THIS FIELD CONTAIN THE OFFSET OF THE
         FIRST FREE PAGE TABLE ENTRY AVAILABLE IN THIS FRAME (FOR NON PAGEABLE
         PGMBK FRAMES ONLY - NPGM) WHICH WERE PREVIOUSLY DEALLOCATED.
    000C   12 Signed       4 *              FRMCSWRD (FLAGS AND STATUS BITS)
         FRMCHN redefinitions used by fast subpooled free storage garbage
         collection (HCPFRFDX):
         Note that fast subpooled free storage frames do not otherwise use the
         typical free storage frame queueing techniques except during garbage
         collection processing (HCPFRFDX, SUBMTFTE queue, etc.). This means that
         FRMONQUE gets set even when subpooled free storage FRMTEs aren't on any
         queue.
    0008    8 Signed       2 FRMBCT         Count of returned blocks
    000A   10 Signed       2 FRMLAST        Last block queued
         Redefinition for host DAT (region/segment) table frames
    0000    0 Signed       4 *              FRMID: eyecatcher, see FRMID
                                            definition above
    0004    4 Signed       4 FRMHDPBK       Pointer to Host DAT table
                                            Programming area block for the
                                            DAT table associated with this
                                            frame. Filled in for each FRMTE
                                            for multi-frame DAT tables.
    0008    8 Signed       4 *              FRMCHN: for multi-frame host DAT
                                            tables, contains the number of
                                            contiguous frames starting at and
                                            including this frame, by
                                            ascending address
    000C   12 Signed       4 *              FRMCSWRD: as above

#### FRMTE Storage Layout

    *** FRMTE - FRAME TABLE ENTRY
    *
    *     +---------------------------+---------------------------+
    *   0 |         FRMFPNT           |         FRMBPNT           |
    *     +---------------------------+---------------------------+
    *   8 |          FRMPTE           |         FRMCSWRD          |
    *     +---------------------------+---------------------------+
    *
    *** FRMTE - FRAME TABLE ENTRY

    *** Overlay for FRMBPNT in FRMTE
    *
    *                                 +--------------------+------+
    *   0 ...                       4 |////////////////////|:BFLAG|
    *                                 +--------------------+------+
    *   8
    *
    *** Overlay for FRMBPNT in FRMTE

    *** Overlay for FRMFPNT in FRMTE
    *
    *     +---------------------------+-------------+------+------+
    *   0 |///////////////////////////|  FRMTCSTE   |:PSCT |:ASSEL|
    *     +---------------------------+-------------+------+------+
    *   8 |          FRMSTO           |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  10
    *
    *** Overlay for FRMFPNT in FRMTE

    *** Overlay for FRMPTE in FRMTE
    *
    *     +-------------+-------------+
    *   8 |  FRMPS1ST   |  FRMPSLST   | C
    *     +-------------+-------------+
    *
    *** Overlay for FRMPTE in FRMTE

    *** Overlay for FRMPTE in FRMTE
    *
    *     +---------------------------+
    *   8 |         FRMDCKEY          | C
    *     +---------------------------+
    *
    *** Overlay for FRMPTE in FRMTE

    *** Overlay for FRMCSWRD in FRMTE
    *
    *                                 +------+------+------+------+
    *   8 ...                       C |:CSB0 |:CSB1 |:CSB2 |:CSB3 |
    *                                 +------+------+------+------+
    *  10
    *
    *** Overlay for FRMCSWRD in FRMTE

    *** Overlay for FRMORGIN in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   0 |          FRMID            |         FRMLKCNT          |
    *     +---------------------------+---------------------------+
    *   8 |///////////////////////////|///////////////////////////|
    *     +---------------------------+---------------------------+
    *  10
    *
    *** Overlay for FRMORGIN in FRMTE

    *** Overlay for FRMORGIN in FRMTE
    *
    *     +---------------------------+-------------+
    *   0 |         FRMFRNXT          |  FRMDHTOD   | 6
    *     +---------------------------+-------------+
    *
    *** Overlay for FRMORGIN in FRMTE

    *** Overlay for FRMDHTOD in FRMTE
    *
    *                                 +-------------+-------------+
    *   0 ...                       4 |  FRMVMFRG   |  FRMDWUSE   |
    *     +---------------------------+-------------+-------------+
    *   8 |          FRMCHN           |///////////////////////////|
    *     +---------------------------+---------------------------+
    *  10
    *
    *** Overlay for FRMDHTOD in FRMTE

    *** Overlay for FRMCHN in FRMTE
    *
    *     +-------------+-------------+
    *   8 |   FRMBCT    |  FRMLAST    | C
    *     +-------------+-------------+
    *
    *** Overlay for FRMCHN in FRMTE

    *** Overlay for FRMORGIN in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   0 |///////////////////////////|         FRMHDPBK          |
    *     +---------------------------+---------------------------+
    *   8 |///////////////////////////|///////////////////////////|
    *     +---------------------------+---------------------------+
    *  10
    *
    *** Overlay for FRMORGIN in FRMTE

#### FRMTE Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    FREMX          000C 000001FD
    FREMXB         000C 00000FE8
    FRMAFS         000C 00000069
    FRMALTMV       0007 FD
    FRMALTPG       0007 FE
    FRMASSEL       0007
    FRMAVAIL       000F 80
    FRMBCT         0008
    FRMBFLAG       0007
    FRMBPNT        0004
    FRMCHN         0008
    FRMCP          000C 00000001
    FRMCPLOK       000D 40
    FRMCSB0        000C
    FRMCSB1        000D
    FRMCSB2        000E
    FRMCSB3        000F
    FRMCSWRD       000C
    FRMDCKEY       0008
    FRMDHTOD       0004
    FRMDTSP        000C 00000082
    FRMDWUSE       0006
    FRMERROR       000D 01
    FRMFPNT        0000
    FRMFREE        000C 00000061
    FRMFRNXT       0000
    FRMFRSY        000C 00000067
    FRMFRVM        000C 00000065
    FRMFRVR        000C 00000063
    FRMFTADD       000C 00000088
    FRMFTPF        0007 FF
    FRMFTTBL       000C 00000009
    FRMFXASA       000E 80
    FRMHDPBK       0004
    FRMID          0000
    FRMLAST        000A
    FRMLAVL        000E 01
    FRMLENTH       000C 00000010
    FRMLKCNT       0004
    FRMLOCKD       000D 80
    FRMLTRCT       000F 0F
    FRMLTRHI       000F 08
    FRMLTRMX       000F 0E
    FRMMDCHT       000C 0000000D
    FRMNEVER       000C 000000FF
    FRMNEXT        0010
    FRMNOTI        000C 00000005
    FRMNPGM        000C 00000051
    FRMNPGM1       000C 00000051
    FRMNPGM2       000C 00000055
    FRMOFFLN       000C 00000010
    FRMONQUE       000D 02
    FRMORGIN       0000
    FRMOWNED       000D 20
    FRMPDISO       000C 0000007D
    FRMPERSY       000C 0000006F
    FRMPPGM        000C 000000D1
    FRMPPGM1       000C 000000D1
    FRMPPGM2       000C 000000D5
    FRMPRFX        000C 00000031
    FRMPSCT        0006
    FRMPSLST       000A
    FRMPS1ST       0008
    FRMPTE         0008
    FRMRELSE       000F 20
    FRMRFRSH       000E 20
    FRMRONLY       000D 08
    FRMSHARE       000D 10
    FRMSTEAL       000F 10
    FRMSTO         0008
    FRMSUSER       000C 00000081
    FRMSUTIL       000C 00000083
    FRMSVDSK       000C 000000C3
    FRMTCSTE       0004
    FRMTRACE       000C 00000021
    FRMTRANS       000F 40
    FRMUSER        000C 00000080
    FRMVCB         000C 0000006B
    FRMVMFRG       0004
    FRMVR          000C 00000040
    TCHASPAC       0007 C0
    TCHIXMSK       0007 3F

This information is based on z/VM V4R3.0. Last updated on 1 May 2002 at 08:46:04 EDT.
Copyright IBM Corporation, 1990, 2002