--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:46 by OpenVMS SDL EV3-3 -- Source: 02-MAR-1999 15:16:47 $1$DGA7274:[LIB_ADA.LIS]GCTDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package GCTDEF is -- module GCTDEF GCT_K_GALAXY_ID_LENGTH : constant := 16; -- -- typedef the ID and HANDLE -- subtype GCT_ID_TYPE is UNSIGNED_QUADWORD; subtype GCT_HANDLE_TYPE is INTEGER_32; -- -- Success codes -- GCT_K_SUCCESS : constant := 1; GCT_K_NOSTATUS : constant := 0; -- -- Error codes. All negative, all even (low bit clear) -- This allows BLISS tests for errors on the low bit to -- work correctly... even though they are not VMS error -- codes. -- GCT_K_BADPARAM : constant := -2; -- Bad parameter in call GCT_K_ILLEGAL : constant := -4; -- Operation is illegal GCT_K_NOTFOUND : constant := -6; -- Lookup failed GCT_K_BADALIGN : constant := -8; -- Bad PA alignment GCT_K_BADALLOC : constant := -10; -- Invalid size increment GCT_K_OVERLAP : constant := -12; -- Fragment overlaps with existing GCT_K_NOTINITIALIZED : constant := -14; -- Tree not initialized GCT_K_BADHANDLE : constant := -16; -- Illegal HANDLE GCT_K_NOTDELETED : constant := -18; -- Node was not deleted GCT_K_MAXEXCEEDED : constant := -20; -- Too many memory fragments GCT_K_NOTALLOWED : constant := -22; -- Operation is not allowed GCT_K_BADOWNER : constant := -24; -- Node does not have the right owner GCT_K_ALREADYOWNED : constant := -26; -- Node already has an owner GCT_K_NOTPARTITION : constant := -28; -- The node is not a partition GCT_K_NOTCOMMUNITY : constant := -30; -- The node is not a community GCT_K_ILLEGALTREE : constant := -32; -- Corrupt tree state GCT_K_NOTHARDWARE : constant := -34; -- The node is not a hardware component GCT_K_NOMEMORY : constant := -36; -- Failed to allocate the node GCT_K_BADPA : constant := -38; -- PA is not in the memory system GCT_K_BADSIZE : constant := -40; -- Size of the fragment is not valid GCT_K_TREELOCKED : constant := -42; -- Attempt to lock a locked tree GCT_K_BADUPDATELEVEL : constant := -44; -- Illegal update level input GCT_K_NOTMEMORYDESC : constant := -46; -- Not a memory descriptor node GCT_K_NOTLOCKED : constant := -48; -- Tried to unlock an unlocked tree GCT_K_UNAVAILABLE : constant := -50; -- Node is not available GCT_K_STILLACTIVE : constant := -52; -- The HW component is still active GCT_K_CHILDSTILLACTIVE : constant := -54; -- A component part of the HW is still active GCT_K_CHILDALREADYOWNED : constant := -56; -- A child is owned. This is an internal error! GCT_K_NOTSHARED : constant := -58; -- The device can't be assigned because an ancestor is not shared -- -- Node TYPE codes -- GCT_K_NODE_ROOT : constant := 1; -- Root node GCT_K_NODE_HW_ROOT : constant := 2; -- Hardware Root GCT_K_NODE_SW_ROOT : constant := 3; -- Software Root GCT_K_NODE_TEMPLATE_ROOT : constant := 4; -- Template Root GCT_K_NODE_COMMUNITY : constant := 5; -- Community GCT_K_NODE_PARTITION : constant := 6; -- Partition GCT_K_NODE_SBB : constant := 7; -- System Building Block GCT_K_NODE_PSEUDO : constant := 8; -- Pseudo device GCT_K_NODE_CPU : constant := 9; -- CPU GCT_K_NODE_MEMORY_SUB : constant := 10; -- Memory Subsystem GCT_K_NODE_MEMORY_DESC : constant := 11; -- Memory Description GCT_K_NODE_MEMORY_CTRL : constant := 12; -- Memory Controller GCT_K_NODE_IOP : constant := 13; -- IO Processor GCT_K_NODE_HOSE : constant := 14; -- IO Hose GCT_K_NODE_BUS : constant := 15; -- Option Bus GCT_K_NODE_IO_CTRL : constant := 16; -- IO Controller GCT_K_NODE_SLOT : constant := 17; -- Option slot GCT_K_NODE_CPU_MODULE : constant := 18; -- CPU module board GCT_K_NODE_POWER_ENVIR : constant := 19; -- Power Environmental GCT_K_NODE_FRU_ROOT : constant := 20; -- FRU Root GCT_K_NODE_FRU_DESC : constant := 21; -- FRU Descripter GCT_K_NODE_SMB : constant := 22; -- System Mother Board GCT_K_NODE_CAB : constant := 23; -- Cabinet GCT_K_NODE_SYS_CHASSIS : constant := 24; -- System Chassis GCT_K_NODE_EXP_CHASSIS : constant := 25; -- Expander Chassis GCT_K_NODE_SYS_INTER_SWITCH : constant := 26; -- System Interconnect Switch GCT_K_NODE_LAST : constant := 27; -- Always Last -- -- Routine index values for console callbacks -- GCT_K_READ_LOCK : constant := 1; -- Take out a read lock GCT_K_READ_UNLOCK : constant := 2; -- Release the read lock GCT_K_SET_ACTIVE : constant := 3; -- Set a node active (current_owner) GCT_K_SET_INACTIVE : constant := 4; -- Set a node inactive (current_owner) GCT_K_ASSIGN_FRAGMENT : constant := 5; -- Assign a memory fragment GCT_K_DEASSIGN_FRAGMENT : constant := 6; -- Deassign a memory fragment GCT_K_CREATE_COMMUNITY : constant := 7; -- Create a community node GCT_K_DELETE_COMMUNITY : constant := 8; -- Delete a community GCT_K_CREATE_PARTITION : constant := 9; -- Create a partition node GCT_K_DELETE_PARTITION : constant := 10; -- Delete a partition GCT_K_ASSIGN_HW : constant := 11; -- Assign HW to a community or partition GCT_K_DEASSIGN_HW : constant := 12; -- Deassign HW GCT_K_FIND_PARTITION : constant := 13; -- Find Partition GCT_K_FIND_NODE : constant := 14; -- Search for a component GCT_K_GET_TEXT : constant := 15; -- Get a text string GCT_K_UPDATE_GMDB : constant := 16; -- Update GMDB area in community GCT_K_VALIDATE_PARTITION : constant := 17; -- Validate a partition GCT_K_INITIALIZE_PARTITION : constant := 18; -- Initialize a partition GCT_K_UPDATE_GALAXY_ID : constant := 19; -- Update the Galaxy ID GCT_K_GET_MAX_PARTITION : constant := 20; -- Get the max partition count GCT_K_UPDATE_INSTANCE_NAME : constant := 21; -- Read/Write Instance Name GCT_K_SAVE_CONFIG : constant := 22; -- Save Configuration GCT_K_GET_SENSOR_INFO : constant := 23; -- Get sensor information -- -- Node subtype codes -- GCT_K_SNODE_UNKNOWN : constant := 0; -- Unknown subtype -- CPU codes GCT_K_SNODE_CPU_NOPRIMARY : constant := 1; -- A CPU not capable of being a primary -- Bus codes GCT_K_SNODE_PCI : constant := 2; -- Peripheral Component Interconnect GCT_K_SNODE_EISA : constant := 3; -- Extended ISA bus GCT_K_SNODE_ISA : constant := 4; -- Industry Standard Architecture bus GCT_K_SNODE_XMI : constant := 5; -- XMI bus GCT_K_SNODE_FBUS : constant := 6; -- FutureBus GCT_K_SNODE_XBUS : constant := 7; -- Built in device bus GCT_K_SNODE_USB : constant := 8; -- Univeral Serial Bus -- IO controller codes GCT_K_SNODE_SERIAL_PORT : constant := 9; -- Serial port GCT_K_SNODE_FLOPPY : constant := 10; -- Standard Floppy GCT_K_SNODE_PARALLEL_PORT : constant := 11; -- Parallel port GCT_K_SNODE_SCSI : constant := 12; -- SCSI Controller GCT_K_SNODE_IDE : constant := 13; -- IDE Controller GCT_K_SNODE_NI : constant := 14; -- Ethernet Controller GCT_K_SNODE_FDDI : constant := 15; -- FDDI GCT_K_SNODE_TOKEN_RING : constant := 16; -- Token Ring GCT_K_SNODE_NI_SCSI : constant := 17; -- Combo card GCT_K_SNODE_GRAPHICS : constant := 18; -- Graphics Controller GCT_K_SNODE_ATM : constant := 19; -- ATM Controller GCT_K_SNODE_MEM_CHAN : constant := 20; -- Memory Channel GCT_K_SNODE_CI : constant := 21; -- CI adapter GCT_K_SNODE_1394 : constant := 22; -- GCT_K_SNODE_AGP : constant := 23; -- AGP (Graphics Port) GCT_K_SNODE_SUPER_HIPPI : constant := 24; -- Super Hippi GCT_K_SNODE_FIBRECHANNEL : constant := 25; -- Fibrechannel GCT_K_SNODE_CAB : constant := 26; -- Cabinet GCT_K_SNODE_CHASSIS : constant := 27; -- System Chassis GCT_K_SNODE_EXP_CHASSIS : constant := 28; -- Expand System Chassis GCT_K_SNODE_POWER_SUPPLY : constant := 29; -- Power Envir - Power Supply GCT_K_SNODE_COOLING : constant := 30; -- Power Envir - Cooling GCT_K_SNODE_LAST : constant := 31; -- Highest -- -- Lookup flags -- GCT_K_FIND_ANY : constant := 0; GCT_K_FIND_BY_OWNER : constant := 1; GCT_K_FIND_BY_TYPE : constant := 2; GCT_K_FIND_BY_SUBTYPE : constant := 4; GCT_K_FIND_BY_ID : constant := 8; GCT_K_FIND_UNAVAILABLE : constant := 16; -- -- Lock types -- GCT_K_LOCK_FOR_READ : constant := 1; -- Just want to read the tree GCT_K_LOCK_FOR_UPDATE : constant := 2; -- Want to update the tree GCT_K_UNLOCK_READ : constant := 3; -- Unlock a read GCT_K_UNLOCK_UPDATE : constant := 4; -- Unlock an update GCT_K_UNLOCK_NO_UPDATE : constant := 5; -- Unlock an update lock with no update -- -- Magic -- GCT_K_NODE_VALID : constant := 1498958919; -- -- OS types -- GCT_K_OS_VMS : constant := 1; -- OS is VMS on Partition GCT_K_OS_OSF : constant := 2; -- OS is OSF on Partition GCT_K_OS_NT : constant := 3; -- OS is NT on Partition GCT_K_OS_LAST : constant := 4; -- Always last -- -- Version 5.1 -- GCT_K_REVISION_MAJOR : constant := 5; GCT_K_REVISION_MINOR : constant := 1; type GCT_REV_FULL_TYPE is -- Structure revision record REV_MAJOR : UNSIGNED_WORD; REV_MINOR : UNSIGNED_WORD; end record; for GCT_REV_FULL_TYPE use record REV_MAJOR at 0 range 0 .. 15; REV_MINOR at 2 range 0 .. 15; end record; for GCT_REV_FULL_TYPE'SIZE use 32; GCT_REV_FULL_TYPE_INIT : constant GCT_REV_FULL_TYPE := (REV_MAJOR => UNSIGNED_WORD_ZERO, REV_MINOR => UNSIGNED_WORD_ZERO); type GCT_BUFFER_HEADER_TYPE is record BUFFER_CKSUM : UNSIGNED_QUADWORD; -- Placeholder for checksum BUFFER_SIZE : UNSIGNED_LONGWORD; -- Size of structure REV_FULL : GCT_REV_FULL_TYPE; -- Structure revision GALAXY_ENABLE : CHARACTER; -- System supports Galaxy BUFFER_RESERVED : UNSIGNED_BYTE_ARRAY (1 .. 47); -- Pad to 64 bytes end record; for GCT_BUFFER_HEADER_TYPE use record BUFFER_CKSUM at 0 range 0 .. 63; BUFFER_SIZE at 8 range 0 .. 31; REV_FULL at 12 range 0 .. 31; GALAXY_ENABLE at 16 range 0 .. 7; BUFFER_RESERVED at 17 range 0 .. 375; end record; for GCT_BUFFER_HEADER_TYPE'SIZE use 512; GCT_BUFFER_HEADER_TYPE_INIT : constant GCT_BUFFER_HEADER_TYPE := (BUFFER_CKSUM => UNSIGNED_QUADWORD_ZERO, BUFFER_SIZE => UNSIGNED_LONGWORD_ZERO, REV_FULL => GCT_REV_FULL_TYPE_INIT, GALAXY_ENABLE => ASCII.NUL, BUFFER_RESERVED => (others => 0)); -- -- Values for text lookups -- GCT_K_NAME_IS_PRETTY : constant := 256; -- Return plain text GCT_K_NAME_IS_FLAG : constant := 512; -- Input is flags GCT_K_FLAG_NAMES : constant := 512; -- Decode gct$q_node_flags GCT_K_MEM_FLAG_NAMES : constant := 513; -- Decode mem_flags GCT_K_SUBTYPE_NAMES : constant := 2; -- Decode Subtypes GCT_K_TYPE_NAMES : constant := 3; -- Decode Types GCT_K_OS_NAMES : constant := 4; -- Decode OS name GCT_K_ERROR_TEXT : constant := 5; -- Decode Error value GCT_K_RTN_NAMES : constant := 6; -- Callback routine names GCT_K_LOCK_TYPES : constant := 7; -- Lock types for calls -- -- An array of bindings are used to tell the code that populates a tree -- what the config and affinity bindings are for any node type. -- type GCT_BINDINGS_TYPE is record BIND_TYPE : UNSIGNED_BYTE; -- Node type BIND_PARENT : UNSIGNED_BYTE; -- Type of parent BIND_CONFIG : UNSIGNED_BYTE; -- Config binding BIND_AFFINITY : UNSIGNED_BYTE; -- Affinity binding end record; for GCT_BINDINGS_TYPE use record BIND_TYPE at 0 range 0 .. 7; BIND_PARENT at 1 range 0 .. 7; BIND_CONFIG at 2 range 0 .. 7; BIND_AFFINITY at 3 range 0 .. 7; end record; for GCT_BINDINGS_TYPE'SIZE use 32; GCT_BINDINGS_TYPE_INIT : constant GCT_BINDINGS_TYPE := (BIND_TYPE => 0, BIND_PARENT => 0, BIND_CONFIG => 0, BIND_AFFINITY => 0); -- -- Define the node structure -- GCT_M_NODE_HARDWARE : constant := 16#00000001#; GCT_M_NODE_HOTSWAP : constant := 16#00000002#; GCT_M_NODE_UNAVAILABLE : constant := 16#00000004#; GCT_M_NODE_HW_TEMPLATE : constant := 16#00000008#; GCT_M_NODE_INITIALIZED : constant := 16#00000010#; GCT_M_NODE_CPU_PRIMARY : constant := 16#00000020#; GCT_M_NODE_IN_CONSOLE : constant := 16#00000040#; GCT_M_NODE_RSRVD_7_31 : constant := 16#FFFFFF80#; GCT_M_NODE_RSRVD_32_63 : constant := 16#00000000#; type GCT_OWNER_BOTH_TYPE is -- Both owner and active owner record OWNER : GCT_HANDLE_TYPE; -- Software owner of node CURRENT_OWNER : GCT_HANDLE_TYPE; -- Active user of the node end record; for GCT_OWNER_BOTH_TYPE use record OWNER at 0 range 0 .. 31; CURRENT_OWNER at 4 range 0 .. 31; end record; for GCT_OWNER_BOTH_TYPE'SIZE use 64; GCT_OWNER_BOTH_TYPE_INIT : constant GCT_OWNER_BOTH_TYPE := --***INFO: (owner (owner_each (owner_union (gct_node) ) ) ) Default wanted but not available (OWNER => , --***INFO: (current_owner (owner_each (owner_union (gct_node) ) ) ) Default wanted but not available CURRENT_OWNER => ); type GCT_NODE_ID_SMB_TYPE is record NODE_ID_SMB_RVD0_31 : BIT_ARRAY (0 .. 31); NODE_ID_SMB_RVD32_38 : UNSIGNED_8; NODE_ID_SMB_SMB : UNSIGNED_8; NODE_ID_SMB_SBB : UNSIGNED_8; NODE_ID_SMB_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_SMB_TYPE use record NODE_ID_SMB_RVD0_31 at 0 range 0 .. 31; NODE_ID_SMB_RVD32_38 at 4 range 0 .. 7; NODE_ID_SMB_SMB at 5 range 0 .. 7; NODE_ID_SMB_SBB at 6 range 0 .. 7; NODE_ID_SMB_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_SMB_TYPE'SIZE use 64; GCT_NODE_ID_SMB_TYPE_INIT : constant GCT_NODE_ID_SMB_TYPE := (NODE_ID_SMB_RVD0_31 => (others => FALSE), NODE_ID_SMB_RVD32_38 => 0, NODE_ID_SMB_SMB => 0, NODE_ID_SMB_SBB => 0, NODE_ID_SMB_RVD56_63 => 0); type GCT_NODE_ID_CPU_TYPE is record NODE_ID_CPU_CPU : UNSIGNED_16; NODE_ID_CPU_RVD16_23 : UNSIGNED_8; NODE_ID_CPU_REVCNT : UNSIGNED_8; NODE_ID_CPU_RVD32_39 : UNSIGNED_8; NODE_ID_CPU_SMB : UNSIGNED_8; NODE_ID_CPU_SBB : UNSIGNED_8; NODE_ID_CPU_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_CPU_TYPE use record NODE_ID_CPU_CPU at 0 range 0 .. 15; NODE_ID_CPU_RVD16_23 at 2 range 0 .. 7; NODE_ID_CPU_REVCNT at 3 range 0 .. 7; NODE_ID_CPU_RVD32_39 at 4 range 0 .. 7; NODE_ID_CPU_SMB at 5 range 0 .. 7; NODE_ID_CPU_SBB at 6 range 0 .. 7; NODE_ID_CPU_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_CPU_TYPE'SIZE use 64; GCT_NODE_ID_CPU_TYPE_INIT : constant GCT_NODE_ID_CPU_TYPE := (NODE_ID_CPU_CPU => 0, NODE_ID_CPU_RVD16_23 => 0, NODE_ID_CPU_REVCNT => 0, NODE_ID_CPU_RVD32_39 => 0, NODE_ID_CPU_SMB => 0, NODE_ID_CPU_SBB => 0, NODE_ID_CPU_RVD56_63 => 0); type GCT_NODE_ID_MEM_SUB_TYPE is record NODE_ID_MEM_SUB_MEMSUB : UNSIGNED_8; NODE_ID_MEM_SUB_RVD8_39 : BIT_ARRAY (0 .. 31); NODE_ID_MEM_SUB_SMB : UNSIGNED_8; NODE_ID_MEM_SUB_SBB : UNSIGNED_8; NODE_ID_MEM_SUB_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_MEM_SUB_TYPE use record NODE_ID_MEM_SUB_MEMSUB at 0 range 0 .. 7; NODE_ID_MEM_SUB_RVD8_39 at 1 range 0 .. 31; NODE_ID_MEM_SUB_SMB at 5 range 0 .. 7; NODE_ID_MEM_SUB_SBB at 6 range 0 .. 7; NODE_ID_MEM_SUB_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_MEM_SUB_TYPE'SIZE use 64; GCT_NODE_ID_MEM_SUB_TYPE_INIT : constant GCT_NODE_ID_MEM_SUB_TYPE := (NODE_ID_MEM_SUB_MEMSUB => 0, NODE_ID_MEM_SUB_RVD8_39 => (others => FALSE), NODE_ID_MEM_SUB_SMB => 0, NODE_ID_MEM_SUB_SBB => 0, NODE_ID_MEM_SUB_RVD56_63 => 0); type GCT_NODE_ID_MEM_DESC_TYPE is record NODE_ID_MEM_DESC_MEMDESC : UNSIGNED_16; NODE_ID_MEM_DESC_MEMSUB : UNSIGNED_8; NODE_ID_MEM_DESC_RVD24_39 : UNSIGNED_16; NODE_ID_MEM_DESC_SMB : UNSIGNED_8; NODE_ID_MEM_DESC_SBB : UNSIGNED_8; NODE_ID_MEM_DESC_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_MEM_DESC_TYPE use record NODE_ID_MEM_DESC_MEMDESC at 0 range 0 .. 15; NODE_ID_MEM_DESC_MEMSUB at 2 range 0 .. 7; NODE_ID_MEM_DESC_RVD24_39 at 3 range 0 .. 15; NODE_ID_MEM_DESC_SMB at 5 range 0 .. 7; NODE_ID_MEM_DESC_SBB at 6 range 0 .. 7; NODE_ID_MEM_DESC_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_MEM_DESC_TYPE'SIZE use 64; GCT_NODE_ID_MEM_DESC_TYPE_INIT : constant GCT_NODE_ID_MEM_DESC_TYPE := (NODE_ID_MEM_DESC_MEMDESC => 0, NODE_ID_MEM_DESC_MEMSUB => 0, NODE_ID_MEM_DESC_RVD24_39 => 0, NODE_ID_MEM_DESC_SMB => 0, NODE_ID_MEM_DESC_SBB => 0, NODE_ID_MEM_DESC_RVD56_63 => 0); type GCT_NODE_ID_MEM_CTRL_TYPE is record NODE_ID_MEM_CTRL_MEMCTRL : UNSIGNED_16; NODE_ID_MEM_CTRL_MEMSUB : UNSIGNED_8; NODE_ID_MEM_CTRL_RVD24_39 : UNSIGNED_16; NODE_ID_MEM_CTRL_SMB : UNSIGNED_8; NODE_ID_MEM_CTRL_SBB : UNSIGNED_8; NODE_ID_MEM_CTRL_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_MEM_CTRL_TYPE use record NODE_ID_MEM_CTRL_MEMCTRL at 0 range 0 .. 15; NODE_ID_MEM_CTRL_MEMSUB at 2 range 0 .. 7; NODE_ID_MEM_CTRL_RVD24_39 at 3 range 0 .. 15; NODE_ID_MEM_CTRL_SMB at 5 range 0 .. 7; NODE_ID_MEM_CTRL_SBB at 6 range 0 .. 7; NODE_ID_MEM_CTRL_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_MEM_CTRL_TYPE'SIZE use 64; GCT_NODE_ID_MEM_CTRL_TYPE_INIT : constant GCT_NODE_ID_MEM_CTRL_TYPE := (NODE_ID_MEM_CTRL_MEMCTRL => 0, NODE_ID_MEM_CTRL_MEMSUB => 0, NODE_ID_MEM_CTRL_RVD24_39 => 0, NODE_ID_MEM_CTRL_SMB => 0, NODE_ID_MEM_CTRL_SBB => 0, NODE_ID_MEM_CTRL_RVD56_63 => 0); type GCT_NODE_ID_IOP_TYPE is record NODE_ID_IOP_IOP : UNSIGNED_8; NODE_ID_IOP_RVD8_39 : BIT_ARRAY (0 .. 31); NODE_ID_IOP_SMB : UNSIGNED_8; NODE_ID_IOP_SBB : UNSIGNED_8; NODE_ID_IOP_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_IOP_TYPE use record NODE_ID_IOP_IOP at 0 range 0 .. 7; NODE_ID_IOP_RVD8_39 at 1 range 0 .. 31; NODE_ID_IOP_SMB at 5 range 0 .. 7; NODE_ID_IOP_SBB at 6 range 0 .. 7; NODE_ID_IOP_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_IOP_TYPE'SIZE use 64; GCT_NODE_ID_IOP_TYPE_INIT : constant GCT_NODE_ID_IOP_TYPE := (NODE_ID_IOP_IOP => 0, NODE_ID_IOP_RVD8_39 => (others => FALSE), NODE_ID_IOP_SMB => 0, NODE_ID_IOP_SBB => 0, NODE_ID_IOP_RVD56_63 => 0); type GCT_NODE_ID_HOSE_TYPE is record NODE_ID_HOSE_HOSE : UNSIGNED_8; NODE_ID_HOSE_IOP : UNSIGNED_8; NODE_ID_HOSE_RVD24_47 : UNSIGNED_24; NODE_ID_HOSE_SMB : UNSIGNED_8; NODE_ID_HOSE_SBB : UNSIGNED_8; NODE_ID_HOSE_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_HOSE_TYPE use record NODE_ID_HOSE_HOSE at 0 range 0 .. 7; NODE_ID_HOSE_IOP at 1 range 0 .. 7; NODE_ID_HOSE_RVD24_47 at 2 range 0 .. 23; NODE_ID_HOSE_SMB at 5 range 0 .. 7; NODE_ID_HOSE_SBB at 6 range 0 .. 7; NODE_ID_HOSE_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_HOSE_TYPE'SIZE use 64; GCT_NODE_ID_HOSE_TYPE_INIT : constant GCT_NODE_ID_HOSE_TYPE := (NODE_ID_HOSE_HOSE => 0, NODE_ID_HOSE_IOP => 0, NODE_ID_HOSE_RVD24_47 => 0, NODE_ID_HOSE_SMB => 0, NODE_ID_HOSE_SBB => 0, NODE_ID_HOSE_RVD56_63 => 0); type GCT_NODE_ID_BUS_TYPE is record NODE_ID_BUS_BUS : UNSIGNED_8; NODE_ID_BUS_HOSE : UNSIGNED_8; NODE_ID_BUS_IOP : UNSIGNED_8; NODE_ID_BUS_RVD24_39 : UNSIGNED_16; NODE_ID_BUS_SMB : UNSIGNED_8; NODE_ID_BUS_SBB : UNSIGNED_8; NODE_ID_BUS_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_BUS_TYPE use record NODE_ID_BUS_BUS at 0 range 0 .. 7; NODE_ID_BUS_HOSE at 1 range 0 .. 7; NODE_ID_BUS_IOP at 2 range 0 .. 7; NODE_ID_BUS_RVD24_39 at 3 range 0 .. 15; NODE_ID_BUS_SMB at 5 range 0 .. 7; NODE_ID_BUS_SBB at 6 range 0 .. 7; NODE_ID_BUS_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_BUS_TYPE'SIZE use 64; GCT_NODE_ID_BUS_TYPE_INIT : constant GCT_NODE_ID_BUS_TYPE := (NODE_ID_BUS_BUS => 0, NODE_ID_BUS_HOSE => 0, NODE_ID_BUS_IOP => 0, NODE_ID_BUS_RVD24_39 => 0, NODE_ID_BUS_SMB => 0, NODE_ID_BUS_SBB => 0, NODE_ID_BUS_RVD56_63 => 0); type GCT_NODE_ID_SLOT_TYPE is record NODE_ID_SLOT_SLOT : UNSIGNED_8; NODE_ID_SLOT_BUS : UNSIGNED_8; NODE_ID_SLOT_HOSE : UNSIGNED_8; NODE_ID_SLOT_IOP : UNSIGNED_8; NODE_ID_SLOT_RVD24_31 : UNSIGNED_8; NODE_ID_SLOT_SMB : UNSIGNED_8; NODE_ID_SLOT_SBB : UNSIGNED_8; NODE_ID_SLOT_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_SLOT_TYPE use record NODE_ID_SLOT_SLOT at 0 range 0 .. 7; NODE_ID_SLOT_BUS at 1 range 0 .. 7; NODE_ID_SLOT_HOSE at 2 range 0 .. 7; NODE_ID_SLOT_IOP at 3 range 0 .. 7; NODE_ID_SLOT_RVD24_31 at 4 range 0 .. 7; NODE_ID_SLOT_SMB at 5 range 0 .. 7; NODE_ID_SLOT_SBB at 6 range 0 .. 7; NODE_ID_SLOT_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_SLOT_TYPE'SIZE use 64; GCT_NODE_ID_SLOT_TYPE_INIT : constant GCT_NODE_ID_SLOT_TYPE := (NODE_ID_SLOT_SLOT => 0, NODE_ID_SLOT_BUS => 0, NODE_ID_SLOT_HOSE => 0, NODE_ID_SLOT_IOP => 0, NODE_ID_SLOT_RVD24_31 => 0, NODE_ID_SLOT_SMB => 0, NODE_ID_SLOT_SBB => 0, NODE_ID_SLOT_RVD56_63 => 0); type GCT_NODE_ID_IO_CTRL_TYPE is record NODE_ID_IO_CTRL_CTRLR : UNSIGNED_8; NODE_ID_IO_CTRL_BUS : UNSIGNED_8; NODE_ID_IO_CTRL_HOSE : UNSIGNED_8; NODE_ID_IO_CTRL_IOP : UNSIGNED_8; NODE_ID_IO_CTRL_RVD24_31 : UNSIGNED_8; NODE_ID_IO_CTRL_SMB : UNSIGNED_8; NODE_ID_IO_CTRL_SBB : UNSIGNED_8; NODE_ID_IO_CTRL_RVD56_63 : UNSIGNED_8; end record; for GCT_NODE_ID_IO_CTRL_TYPE use record NODE_ID_IO_CTRL_CTRLR at 0 range 0 .. 7; NODE_ID_IO_CTRL_BUS at 1 range 0 .. 7; NODE_ID_IO_CTRL_HOSE at 2 range 0 .. 7; NODE_ID_IO_CTRL_IOP at 3 range 0 .. 7; NODE_ID_IO_CTRL_RVD24_31 at 4 range 0 .. 7; NODE_ID_IO_CTRL_SMB at 5 range 0 .. 7; NODE_ID_IO_CTRL_SBB at 6 range 0 .. 7; NODE_ID_IO_CTRL_RVD56_63 at 7 range 0 .. 7; end record; for GCT_NODE_ID_IO_CTRL_TYPE'SIZE use 64; GCT_NODE_ID_IO_CTRL_TYPE_INIT : constant GCT_NODE_ID_IO_CTRL_TYPE := (NODE_ID_IO_CTRL_CTRLR => 0, NODE_ID_IO_CTRL_BUS => 0, NODE_ID_IO_CTRL_HOSE => 0, NODE_ID_IO_CTRL_IOP => 0, NODE_ID_IO_CTRL_RVD24_31 => 0, NODE_ID_IO_CTRL_SMB => 0, NODE_ID_IO_CTRL_SBB => 0, NODE_ID_IO_CTRL_RVD56_63 => 0); type GCT_NODE_ID_POWER_ENV_TYPE is record NODE_ID_POWER_ENV_PE_NUM : UNSIGNED_16; NODE_ID_POWER_RVD16_31 : UNSIGNED_16; NODE_ID_POWER_ENV_SMB : UNSIGNED_8; NODE_ID_POWER_ENV_SBB : UNSIGNED_8; NODE_ID_POWER_ENV_CHASSIS : UNSIGNED_8; NODE_ID_POWER_ENV_CAB : UNSIGNED_8; end record; for GCT_NODE_ID_POWER_ENV_TYPE use record NODE_ID_POWER_ENV_PE_NUM at 0 range 0 .. 15; NODE_ID_POWER_RVD16_31 at 2 range 0 .. 15; NODE_ID_POWER_ENV_SMB at 4 range 0 .. 7; NODE_ID_POWER_ENV_SBB at 5 range 0 .. 7; NODE_ID_POWER_ENV_CHASSIS at 6 range 0 .. 7; NODE_ID_POWER_ENV_CAB at 7 range 0 .. 7; end record; for GCT_NODE_ID_POWER_ENV_TYPE'SIZE use 64; GCT_NODE_ID_POWER_ENV_TYPE_INIT : constant GCT_NODE_ID_POWER_ENV_TYPE := (NODE_ID_POWER_ENV_PE_NUM => 0, NODE_ID_POWER_RVD16_31 => 0, NODE_ID_POWER_ENV_SMB => 0, NODE_ID_POWER_ENV_SBB => 0, NODE_ID_POWER_ENV_CHASSIS => 0, NODE_ID_POWER_ENV_CAB => 0); type GCT_NODE_ID_FRU_DESC_TYPE is record NODE_ID_FRU_DESC_SITE_LOC : UNSIGNED_8; NODE_ID_FRU_DESC_CAB_ID : UNSIGNED_8; NODE_ID_FRU_DESC_POSITION : UNSIGNED_8; NODE_ID_FRU_DESC_CHASSIS : UNSIGNED_8; NODE_ID_FRU_DESC_ASSEMBLY : UNSIGNED_8; NODE_ID_FRU_DESC_SUBASSEM : UNSIGNED_8; NODE_ID_FRU_DESC_SLOT : UNSIGNED_16; end record; for GCT_NODE_ID_FRU_DESC_TYPE use record NODE_ID_FRU_DESC_SITE_LOC at 0 range 0 .. 7; NODE_ID_FRU_DESC_CAB_ID at 1 range 0 .. 7; NODE_ID_FRU_DESC_POSITION at 2 range 0 .. 7; NODE_ID_FRU_DESC_CHASSIS at 3 range 0 .. 7; NODE_ID_FRU_DESC_ASSEMBLY at 4 range 0 .. 7; NODE_ID_FRU_DESC_SUBASSEM at 5 range 0 .. 7; NODE_ID_FRU_DESC_SLOT at 6 range 0 .. 15; end record; for GCT_NODE_ID_FRU_DESC_TYPE'SIZE use 64; GCT_NODE_ID_FRU_DESC_TYPE_INIT : constant GCT_NODE_ID_FRU_DESC_TYPE := (NODE_ID_FRU_DESC_SITE_LOC => 0, NODE_ID_FRU_DESC_CAB_ID => 0, NODE_ID_FRU_DESC_POSITION => 0, NODE_ID_FRU_DESC_CHASSIS => 0, NODE_ID_FRU_DESC_ASSEMBLY => 0, NODE_ID_FRU_DESC_SUBASSEM => 0, NODE_ID_FRU_DESC_SLOT => 0); type GCT_NODE_ID_SYS_INTER_SW_TYPE is record NODE_ID_SWITCH_ID : UNSIGNED_16; FILLER_1 : UNSIGNED_16; FILLER_2 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_SYS_INTER_SW_TYPE use record NODE_ID_SWITCH_ID at 0 range 0 .. 15; FILLER_1 at 2 range 0 .. 15; FILLER_2 at 4 range 0 .. 31; end record; for GCT_NODE_ID_SYS_INTER_SW_TYPE'SIZE use 64; GCT_NODE_ID_SYS_INTER_SW_TYPE_INIT : constant GCT_NODE_ID_SYS_INTER_SW_TYPE := (NODE_ID_SWITCH_ID => 0, FILLER_1 => 0, FILLER_2 => (others => FALSE)); type GCT_NODE_ID_PARTITION_TYPE is record NODE_ID_PART_ID : UNSIGNED_16; FILLER_1 : UNSIGNED_16; FILLER_2 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_PARTITION_TYPE use record NODE_ID_PART_ID at 0 range 0 .. 15; FILLER_1 at 2 range 0 .. 15; FILLER_2 at 4 range 0 .. 31; end record; for GCT_NODE_ID_PARTITION_TYPE'SIZE use 64; GCT_NODE_ID_PARTITION_TYPE_INIT : constant GCT_NODE_ID_PARTITION_TYPE := (NODE_ID_PART_ID => 0, FILLER_1 => 0, FILLER_2 => (others => FALSE)); type GCT_NODE_ID_COMMUNITY_TYPE is record NODE_ID_COMM_ID : UNSIGNED_16; FILLER_1 : UNSIGNED_16; FILLER_2 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_COMMUNITY_TYPE use record NODE_ID_COMM_ID at 0 range 0 .. 15; FILLER_1 at 2 range 0 .. 15; FILLER_2 at 4 range 0 .. 31; end record; for GCT_NODE_ID_COMMUNITY_TYPE'SIZE use 64; GCT_NODE_ID_COMMUNITY_TYPE_INIT : constant GCT_NODE_ID_COMMUNITY_TYPE := (NODE_ID_COMM_ID => 0, FILLER_1 => 0, FILLER_2 => (others => FALSE)); type GCT_NODE_ID_ROOT_TYPE is record NODE_ID_ROOT : UNSIGNED_8; FILLER_1 : UNSIGNED_8; FILLER_2 : UNSIGNED_16; FILLER_3 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_ROOT_TYPE use record NODE_ID_ROOT at 0 range 0 .. 7; FILLER_1 at 1 range 0 .. 7; FILLER_2 at 2 range 0 .. 15; FILLER_3 at 4 range 0 .. 31; end record; for GCT_NODE_ID_ROOT_TYPE'SIZE use 64; GCT_NODE_ID_ROOT_TYPE_INIT : constant GCT_NODE_ID_ROOT_TYPE := (NODE_ID_ROOT => 0, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => (others => FALSE)); type GCT_NODE_ID_HW_ROOT_TYPE is record NODE_ID_HW_ROOT : UNSIGNED_8; FILLER_1 : UNSIGNED_8; FILLER_2 : UNSIGNED_16; FILLER_3 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_HW_ROOT_TYPE use record NODE_ID_HW_ROOT at 0 range 0 .. 7; FILLER_1 at 1 range 0 .. 7; FILLER_2 at 2 range 0 .. 15; FILLER_3 at 4 range 0 .. 31; end record; for GCT_NODE_ID_HW_ROOT_TYPE'SIZE use 64; GCT_NODE_ID_HW_ROOT_TYPE_INIT : constant GCT_NODE_ID_HW_ROOT_TYPE := (NODE_ID_HW_ROOT => 0, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => (others => FALSE)); type GCT_NODE_ID_SW_ROOT_TYPE is record NODE_ID_SW_ROOT : UNSIGNED_8; FILLER_1 : UNSIGNED_8; FILLER_2 : UNSIGNED_16; FILLER_3 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_SW_ROOT_TYPE use record NODE_ID_SW_ROOT at 0 range 0 .. 7; FILLER_1 at 1 range 0 .. 7; FILLER_2 at 2 range 0 .. 15; FILLER_3 at 4 range 0 .. 31; end record; for GCT_NODE_ID_SW_ROOT_TYPE'SIZE use 64; GCT_NODE_ID_SW_ROOT_TYPE_INIT : constant GCT_NODE_ID_SW_ROOT_TYPE := (NODE_ID_SW_ROOT => 0, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => (others => FALSE)); type GCT_NODE_ID_FRU_ROOT_TYPE is record NODE_ID_FRU_ROOT : UNSIGNED_8; FILLER_1 : UNSIGNED_8; FILLER_2 : UNSIGNED_16; FILLER_3 : BIT_ARRAY (0 .. 31); end record; for GCT_NODE_ID_FRU_ROOT_TYPE use record NODE_ID_FRU_ROOT at 0 range 0 .. 7; FILLER_1 at 1 range 0 .. 7; FILLER_2 at 2 range 0 .. 15; FILLER_3 at 4 range 0 .. 31; end record; for GCT_NODE_ID_FRU_ROOT_TYPE'SIZE use 64; GCT_NODE_ID_FRU_ROOT_TYPE_INIT : constant GCT_NODE_ID_FRU_ROOT_TYPE := (NODE_ID_FRU_ROOT => 0, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => (others => FALSE)); type GCT_NODE_ID_PSEUDO_TYPE is record NODE_ID_PSEUDO_NUM : UNSIGNED_16; FILLER_1 : UNSIGNED_16; FILLER_2 : UNSIGNED_16; NODE_ID_PSEUDO_CHASSIS : UNSIGNED_8; NODE_ID_PSEUDO_CAB : UNSIGNED_8; end record; for GCT_NODE_ID_PSEUDO_TYPE use record NODE_ID_PSEUDO_NUM at 0 range 0 .. 15; FILLER_1 at 2 range 0 .. 15; FILLER_2 at 4 range 0 .. 15; NODE_ID_PSEUDO_CHASSIS at 6 range 0 .. 7; NODE_ID_PSEUDO_CAB at 7 range 0 .. 7; end record; for GCT_NODE_ID_PSEUDO_TYPE'SIZE use 64; GCT_NODE_ID_PSEUDO_TYPE_INIT : constant GCT_NODE_ID_PSEUDO_TYPE := (NODE_ID_PSEUDO_NUM => 0, FILLER_1 => 0, FILLER_2 => 0, NODE_ID_PSEUDO_CHASSIS => 0, NODE_ID_PSEUDO_CAB => 0); type GCT_ID64_TYPE is -- Reference to the entire 64-bit structure record NODE_ID_SBB_RVD0_31 : BIT_ARRAY (0 .. 31); NODE_ID_SBB_RVD32_47 : UNSIGNED_16; NODE_ID_SBB_SBB : UNSIGNED_8; NODE_ID_SBB_RVD56_63 : UNSIGNED_8; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----GCT_NODE_ID_SMB : GCT_NODE_ID_SMB_TYPE; ----GCT_NODE_ID_CPU : GCT_NODE_ID_CPU_TYPE; ----GCT_NODE_ID_MEM_SUB : GCT_NODE_ID_MEM_SUB_TYPE; ----GCT_NODE_ID_MEM_DESC : GCT_NODE_ID_MEM_DESC_TYPE; ----GCT_NODE_ID_MEM_CTRL : GCT_NODE_ID_MEM_CTRL_TYPE; ----GCT_NODE_ID_IOP : GCT_NODE_ID_IOP_TYPE; ----GCT_NODE_ID_HOSE : GCT_NODE_ID_HOSE_TYPE; ----GCT_NODE_ID_BUS : GCT_NODE_ID_BUS_TYPE; ----GCT_NODE_ID_SLOT : GCT_NODE_ID_SLOT_TYPE; ----GCT_NODE_ID_IO_CTRL : GCT_NODE_ID_IO_CTRL_TYPE; ----GCT_NODE_ID_POWER_ENV : GCT_NODE_ID_POWER_ENV_TYPE; ----GCT_NODE_ID_FRU_DESC : GCT_NODE_ID_FRU_DESC_TYPE; ----GCT_NODE_ID_SYS_INTER_SW : GCT_NODE_ID_SYS_INTER_SW_TYPE; ----GCT_NODE_ID_PARTITION : GCT_NODE_ID_PARTITION_TYPE; ----GCT_NODE_ID_COMMUNITY : GCT_NODE_ID_COMMUNITY_TYPE; ----GCT_NODE_ID_ROOT : GCT_NODE_ID_ROOT_TYPE; ----GCT_NODE_ID_HW_ROOT : GCT_NODE_ID_HW_ROOT_TYPE; ----GCT_NODE_ID_SW_ROOT : GCT_NODE_ID_SW_ROOT_TYPE; ----GCT_NODE_ID_FRU_ROOT : GCT_NODE_ID_FRU_ROOT_TYPE; ----GCT_NODE_ID_PSEUDO : GCT_NODE_ID_PSEUDO_TYPE; end record; for GCT_ID64_TYPE use record NODE_ID_SBB_RVD0_31 at 0 range 0 .. 31; NODE_ID_SBB_RVD32_47 at 4 range 0 .. 15; NODE_ID_SBB_SBB at 6 range 0 .. 7; NODE_ID_SBB_RVD56_63 at 7 range 0 .. 7; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----GCT_NODE_ID_SMB at 0 range 0 .. 63; ----GCT_NODE_ID_CPU at 0 range 0 .. 63; ----GCT_NODE_ID_MEM_SUB at 0 range 0 .. 63; ----GCT_NODE_ID_MEM_DESC at 0 range 0 .. 63; ----GCT_NODE_ID_MEM_CTRL at 0 range 0 .. 63; ----GCT_NODE_ID_IOP at 0 range 0 .. 63; ----GCT_NODE_ID_HOSE at 0 range 0 .. 63; ----GCT_NODE_ID_BUS at 0 range 0 .. 63; ----GCT_NODE_ID_SLOT at 0 range 0 .. 63; ----GCT_NODE_ID_IO_CTRL at 0 range 0 .. 63; ----GCT_NODE_ID_POWER_ENV at 0 range 0 .. 63; ----GCT_NODE_ID_FRU_DESC at 0 range 0 .. 63; ----GCT_NODE_ID_SYS_INTER_SW at 0 range 0 .. 63; ----GCT_NODE_ID_PARTITION at 0 range 0 .. 63; ----GCT_NODE_ID_COMMUNITY at 0 range 0 .. 63; ----GCT_NODE_ID_ROOT at 0 range 0 .. 63; ----GCT_NODE_ID_HW_ROOT at 0 range 0 .. 63; ----GCT_NODE_ID_SW_ROOT at 0 range 0 .. 63; ----GCT_NODE_ID_FRU_ROOT at 0 range 0 .. 63; ----GCT_NODE_ID_PSEUDO at 0 range 0 .. 63; end record; for GCT_ID64_TYPE'SIZE use 64; GCT_ID64_TYPE_INIT : constant GCT_ID64_TYPE := (NODE_ID_SBB_RVD0_31 => (others => FALSE), NODE_ID_SBB_RVD32_47 => 0, NODE_ID_SBB_SBB => 0, NODE_ID_SBB_RVD56_63 => 0); type GCT_NODE_FLAGS_TYPE is -- flags record NODE_HARDWARE : BOOLEAN; -- Node represents hardware NODE_HOTSWAP : BOOLEAN; -- Hardware can be hotswapped NODE_UNAVAILABLE : BOOLEAN; -- Hardware is not avail (power down) NODE_HW_TEMPLATE : BOOLEAN; -- Node is a template device NODE_INITIALIZED : BOOLEAN; -- Partition is initialized NODE_CPU_PRIMARY : BOOLEAN; -- CPU is a primary NODE_IN_CONSOLE : BOOLEAN; -- CPU is in console mode NODE_RSRVD_7_31 : UNSIGNED_25; -- Unused bits in first longword NODE_RSRVD_32_63 : BIT_ARRAY (0 .. 31); -- Unused bits in second longword end record; for GCT_NODE_FLAGS_TYPE use record NODE_HARDWARE at 0 range 0 .. 0; NODE_HOTSWAP at 0 range 1 .. 1; NODE_UNAVAILABLE at 0 range 2 .. 2; NODE_HW_TEMPLATE at 0 range 3 .. 3; NODE_INITIALIZED at 0 range 4 .. 4; NODE_CPU_PRIMARY at 0 range 5 .. 5; NODE_IN_CONSOLE at 0 range 6 .. 6; NODE_RSRVD_7_31 at 0 range 7 .. 31; NODE_RSRVD_32_63 at 4 range 0 .. 31; end record; for GCT_NODE_FLAGS_TYPE'SIZE use 64; GCT_NODE_FLAGS_TYPE_INIT : constant GCT_NODE_FLAGS_TYPE := (NODE_HARDWARE => FALSE, NODE_HOTSWAP => FALSE, NODE_UNAVAILABLE => FALSE, NODE_HW_TEMPLATE => FALSE, NODE_INITIALIZED => FALSE, NODE_CPU_PRIMARY => FALSE, NODE_IN_CONSOLE => FALSE, NODE_RSRVD_7_31 => 0, NODE_RSRVD_32_63 => (others => FALSE)); type GCT_NODE_TYPE is record TYP : UNSIGNED_BYTE; -- Node type SUBTYP : UNSIGNED_BYTE; -- Type-specific subtype SIZE : UNSIGNED_WORD; -- Size of node HD_EXTENSION : UNSIGNED_LONGWORD; -- Header Extension offset OWNER_BOTH : GCT_OWNER_BOTH_TYPE; -- Both owner and active owner GCT_ID64 : GCT_ID64_TYPE; -- Reference to the entire 64-bit structure NODE_FLAGS : GCT_NODE_FLAGS_TYPE; -- flags CONFIG : GCT_HANDLE_TYPE; -- Config binging AFFINITY : GCT_HANDLE_TYPE; -- Affinity (performance) binding PARENT : GCT_HANDLE_TYPE; -- Parent node NEXT_SIB : GCT_HANDLE_TYPE; -- Next sibling node PREV_SIB : GCT_HANDLE_TYPE; -- Previous sibling node CHILD : GCT_HANDLE_TYPE; -- Child node FILLER_1 : GCT_HANDLE_TYPE; -- Reserved for SRM use MAGIC : UNSIGNED_LONGWORD; -- Valid bits 'GLXY' end record; for GCT_NODE_TYPE use record TYP at 0 range 0 .. 7; SUBTYP at 1 range 0 .. 7; SIZE at 2 range 0 .. 15; HD_EXTENSION at 4 range 0 .. 31; OWNER_BOTH at 8 range 0 .. 63; GCT_ID64 at 16 range 0 .. 63; NODE_FLAGS at 24 range 0 .. 63; CONFIG at 32 range 0 .. 31; AFFINITY at 36 range 0 .. 31; PARENT at 40 range 0 .. 31; NEXT_SIB at 44 range 0 .. 31; PREV_SIB at 48 range 0 .. 31; CHILD at 52 range 0 .. 31; FILLER_1 at 56 range 0 .. 31; MAGIC at 60 range 0 .. 31; end record; for GCT_NODE_TYPE'SIZE use 512; GCT_NODE_TYPE_INIT : constant GCT_NODE_TYPE := (TYP => 0, SUBTYP => 0, SIZE => 0, HD_EXTENSION => UNSIGNED_LONGWORD_ZERO, OWNER_BOTH => GCT_OWNER_BOTH_TYPE_INIT, GCT_ID64 => GCT_ID64_TYPE_INIT, NODE_FLAGS => GCT_NODE_FLAGS_TYPE_INIT, --***INFO: (config (gct_node) ) Default wanted but not available CONFIG => , --***INFO: (affinity (gct_node) ) Default wanted but not available AFFINITY => , --***INFO: (parent (gct_node) ) Default wanted but not available PARENT => , --***INFO: (next_sib (gct_node) ) Default wanted but not available NEXT_SIB => , --***INFO: (prev_sib (gct_node) ) Default wanted but not available PREV_SIB => , --***INFO: (child (gct_node) ) Default wanted but not available CHILD => , --***INFO: (reserved (gct_node) ) Default wanted but not available FILLER_1 => , MAGIC => UNSIGNED_LONGWORD_ZERO); type GCT_ROOT_NODE_TYPE is record HD_ROOT : GCT_NODE_TYPE; LOCK : UNSIGNED_QUADWORD; -- Software lock TRANSIENT_LEVEL : UNSIGNED_QUADWORD; -- Update counter (in prog) CURRENT_LEVEL : UNSIGNED_QUADWORD; -- Update counter (actual) CONSOLE_REQ : UNSIGNED_QUADWORD; -- Memory required for console MIN_ALLOC : UNSIGNED_QUADWORD; -- Minimum memory allocation MIN_ALIGN : UNSIGNED_QUADWORD; -- Memory allocation alignment BASE_ALLOC : UNSIGNED_QUADWORD; -- Base memory min allocation BASE_ALIGN : UNSIGNED_QUADWORD; -- Base memory alloc alignment MAX_PHYS_ADDRESS : UNSIGNED_QUADWORD; -- Largest Physical Address MEM_SIZE : UNSIGNED_QUADWORD; -- Total current memory size PLATFORM_TYPE : UNSIGNED_QUADWORD; -- Type code of platform PLATFORM_NAME : INTEGER_32; -- Offset to name string PRIMARY_INSTANCE : GCT_HANDLE_TYPE; -- Handle of GALAXY Primary Partiion FIRST_FREE : GCT_HANDLE_TYPE; -- First free byte of tree pool HIGH_LIMIT : GCT_HANDLE_TYPE; -- High address limit for nodes LOOKASIDE : GCT_HANDLE_TYPE; -- Lookaside list for node deletion AVAILABLE : INTEGER_32; -- Amount of bytes in pool MAX_PARTITION : UNSIGNED_LONGWORD; -- Max partitions PARTITIONS : INTEGER_32; -- Offset to partition ID map COMMUNITIES : INTEGER_32; -- Offset to community ID map MAX_PLATFORM_PARTITION : UNSIGNED_LONGWORD; -- Max part platform supports MAX_FRAGMENTS : UNSIGNED_LONGWORD; -- Max memory frags per desc MAX_DESC : UNSIGNED_LONGWORD; -- Max memory descriptors GALAXY_ID : INTEGER_8_ARRAY (1 .. 16); -- Galaxy ID GALAXY_ID_PAD : INTEGER_8_ARRAY (1 .. 4); -- Pad ID with a longword of bytes (ensures a null terminator) BINDINGS : INTEGER_32; -- Offset to array of bindings end record; for GCT_ROOT_NODE_TYPE use record HD_ROOT at 0 range 0 .. 511; LOCK at 64 range 0 .. 63; TRANSIENT_LEVEL at 72 range 0 .. 63; CURRENT_LEVEL at 80 range 0 .. 63; CONSOLE_REQ at 88 range 0 .. 63; MIN_ALLOC at 96 range 0 .. 63; MIN_ALIGN at 104 range 0 .. 63; BASE_ALLOC at 112 range 0 .. 63; BASE_ALIGN at 120 range 0 .. 63; MAX_PHYS_ADDRESS at 128 range 0 .. 63; MEM_SIZE at 136 range 0 .. 63; PLATFORM_TYPE at 144 range 0 .. 63; PLATFORM_NAME at 152 range 0 .. 31; PRIMARY_INSTANCE at 156 range 0 .. 31; FIRST_FREE at 160 range 0 .. 31; HIGH_LIMIT at 164 range 0 .. 31; LOOKASIDE at 168 range 0 .. 31; AVAILABLE at 172 range 0 .. 31; MAX_PARTITION at 176 range 0 .. 31; PARTITIONS at 180 range 0 .. 31; COMMUNITIES at 184 range 0 .. 31; MAX_PLATFORM_PARTITION at 188 range 0 .. 31; MAX_FRAGMENTS at 192 range 0 .. 31; MAX_DESC at 196 range 0 .. 31; GALAXY_ID at 200 range 0 .. 127; GALAXY_ID_PAD at 216 range 0 .. 31; BINDINGS at 220 range 0 .. 31; end record; for GCT_ROOT_NODE_TYPE'SIZE use 1792; GCT_ROOT_NODE_TYPE_INIT : constant GCT_ROOT_NODE_TYPE := (HD_ROOT => GCT_NODE_TYPE_INIT, LOCK => UNSIGNED_QUADWORD_ZERO, TRANSIENT_LEVEL => UNSIGNED_QUADWORD_ZERO, CURRENT_LEVEL => UNSIGNED_QUADWORD_ZERO, CONSOLE_REQ => UNSIGNED_QUADWORD_ZERO, MIN_ALLOC => UNSIGNED_QUADWORD_ZERO, MIN_ALIGN => UNSIGNED_QUADWORD_ZERO, BASE_ALLOC => UNSIGNED_QUADWORD_ZERO, BASE_ALIGN => UNSIGNED_QUADWORD_ZERO, MAX_PHYS_ADDRESS => UNSIGNED_QUADWORD_ZERO, MEM_SIZE => UNSIGNED_QUADWORD_ZERO, PLATFORM_TYPE => UNSIGNED_QUADWORD_ZERO, PLATFORM_NAME => INTEGER_32_ZERO, --***INFO: (primary_instance (gct_root_node) ) Default wanted but not available PRIMARY_INSTANCE => , --***INFO: (first_free (gct_root_node) ) Default wanted but not available FIRST_FREE => , --***INFO: (high_limit (gct_root_node) ) Default wanted but not available HIGH_LIMIT => , --***INFO: (lookaside (gct_root_node) ) Default wanted but not available LOOKASIDE => , AVAILABLE => INTEGER_32_ZERO, MAX_PARTITION => UNSIGNED_LONGWORD_ZERO, PARTITIONS => INTEGER_32_ZERO, COMMUNITIES => INTEGER_32_ZERO, MAX_PLATFORM_PARTITION => UNSIGNED_LONGWORD_ZERO, MAX_FRAGMENTS => UNSIGNED_LONGWORD_ZERO, MAX_DESC => UNSIGNED_LONGWORD_ZERO, GALAXY_ID => (others => 0), GALAXY_ID_PAD => (others => 0), BINDINGS => INTEGER_32_ZERO); type GCT_SW_ROOT_NODE_TYPE is record HD_SW_ROOT : GCT_NODE_TYPE; end record; for GCT_SW_ROOT_NODE_TYPE use record HD_SW_ROOT at 0 range 0 .. 511; end record; for GCT_SW_ROOT_NODE_TYPE'SIZE use 512; GCT_SW_ROOT_NODE_TYPE_INIT : constant GCT_SW_ROOT_NODE_TYPE := (HD_SW_ROOT => GCT_NODE_TYPE_INIT); type GCT_HW_ROOT_NODE_TYPE is record HD_HW_ROOT : GCT_NODE_TYPE; end record; for GCT_HW_ROOT_NODE_TYPE use record HD_HW_ROOT at 0 range 0 .. 511; end record; for GCT_HW_ROOT_NODE_TYPE'SIZE use 512; GCT_HW_ROOT_NODE_TYPE_INIT : constant GCT_HW_ROOT_NODE_TYPE := (HD_HW_ROOT => GCT_NODE_TYPE_INIT); type GCT_TEMPLATE_ROOT_NODE_TYPE is record HD_TEMPLATE_ROOT : GCT_NODE_TYPE; end record; for GCT_TEMPLATE_ROOT_NODE_TYPE use record HD_TEMPLATE_ROOT at 0 range 0 .. 511; end record; for GCT_TEMPLATE_ROOT_NODE_TYPE'SIZE use 512; GCT_TEMPLATE_ROOT_NODE_TYPE_INIT : constant GCT_TEMPLATE_ROOT_NODE_TYPE := (HD_TEMPLATE_ROOT => GCT_NODE_TYPE_INIT); type GCT_SBB_NODE_TYPE is record HD_SBB : GCT_NODE_TYPE; end record; for GCT_SBB_NODE_TYPE use record HD_SBB at 0 range 0 .. 511; end record; for GCT_SBB_NODE_TYPE'SIZE use 512; GCT_SBB_NODE_TYPE_INIT : constant GCT_SBB_NODE_TYPE := (HD_SBB => GCT_NODE_TYPE_INIT); type GCT_IOP_NODE_TYPE is record HD_IOP : GCT_NODE_TYPE; MIN_IO_PA : UNSIGNED_QUADWORD; -- Lowest possible PA in I/O subsystem MAX_IO_PA : UNSIGNED_QUADWORD; -- Highest possible PA in I/O subsys end record; for GCT_IOP_NODE_TYPE use record HD_IOP at 0 range 0 .. 511; MIN_IO_PA at 64 range 0 .. 63; MAX_IO_PA at 72 range 0 .. 63; end record; for GCT_IOP_NODE_TYPE'SIZE use 640; GCT_IOP_NODE_TYPE_INIT : constant GCT_IOP_NODE_TYPE := (HD_IOP => GCT_NODE_TYPE_INIT, MIN_IO_PA => UNSIGNED_QUADWORD_ZERO, MAX_IO_PA => UNSIGNED_QUADWORD_ZERO); type GCT_HOSE_NODE_TYPE is record HD_HOSE : GCT_NODE_TYPE; end record; for GCT_HOSE_NODE_TYPE use record HD_HOSE at 0 range 0 .. 511; end record; for GCT_HOSE_NODE_TYPE'SIZE use 512; GCT_HOSE_NODE_TYPE_INIT : constant GCT_HOSE_NODE_TYPE := (HD_HOSE => GCT_NODE_TYPE_INIT); type GCT_BUS_NODE_TYPE is record HD_BUS : GCT_NODE_TYPE; end record; for GCT_BUS_NODE_TYPE use record HD_BUS at 0 range 0 .. 511; end record; for GCT_BUS_NODE_TYPE'SIZE use 512; GCT_BUS_NODE_TYPE_INIT : constant GCT_BUS_NODE_TYPE := (HD_BUS => GCT_NODE_TYPE_INIT); type GCT_SLOT_NODE_TYPE is record HD_SLOT : GCT_NODE_TYPE; end record; for GCT_SLOT_NODE_TYPE use record HD_SLOT at 0 range 0 .. 511; end record; for GCT_SLOT_NODE_TYPE'SIZE use 512; GCT_SLOT_NODE_TYPE_INIT : constant GCT_SLOT_NODE_TYPE := (HD_SLOT => GCT_NODE_TYPE_INIT); type GCT_IO_CTRL_NODE_TYPE is record HD_IO_CTRL : GCT_NODE_TYPE; end record; for GCT_IO_CTRL_NODE_TYPE use record HD_IO_CTRL at 0 range 0 .. 511; end record; for GCT_IO_CTRL_NODE_TYPE'SIZE use 512; GCT_IO_CTRL_NODE_TYPE_INIT : constant GCT_IO_CTRL_NODE_TYPE := (HD_IO_CTRL => GCT_NODE_TYPE_INIT); type GCT_CPU_MODULE_NODE_TYPE is record HD_CPU_MODULE : GCT_NODE_TYPE; end record; for GCT_CPU_MODULE_NODE_TYPE use record HD_CPU_MODULE at 0 range 0 .. 511; end record; for GCT_CPU_MODULE_NODE_TYPE'SIZE use 512; GCT_CPU_MODULE_NODE_TYPE_INIT : constant GCT_CPU_MODULE_NODE_TYPE := (HD_CPU_MODULE => GCT_NODE_TYPE_INIT); type GCT_CPU_NODE_TYPE is record HD_CPU : GCT_NODE_TYPE; end record; for GCT_CPU_NODE_TYPE use record HD_CPU at 0 range 0 .. 511; end record; for GCT_CPU_NODE_TYPE'SIZE use 512; GCT_CPU_NODE_TYPE_INIT : constant GCT_CPU_NODE_TYPE := (HD_CPU => GCT_NODE_TYPE_INIT); GCT_K_INSTANCE_NAME_LENGTH : constant := 128; type GCT_PARTITION_NODE_TYPE is record HD_PARTITION : GCT_NODE_TYPE; HWRPB : UNSIGNED_QUADWORD; -- HWRPB PA INCARNATION : UNSIGNED_QUADWORD; -- Partition incarnation PRIORITY : UNSIGNED_QUADWORD; -- Partition priority OS_TYPE : UNSIGNED_LONGWORD; -- OS type PART_RESERVED_1 : INTEGER_32; -- Pad longword available for use INSTANCE_NAME : INTEGER_8_ARRAY (1 .. 128); -- Instance Name end record; for GCT_PARTITION_NODE_TYPE use record HD_PARTITION at 0 range 0 .. 511; HWRPB at 64 range 0 .. 63; INCARNATION at 72 range 0 .. 63; PRIORITY at 80 range 0 .. 63; OS_TYPE at 88 range 0 .. 31; PART_RESERVED_1 at 92 range 0 .. 31; INSTANCE_NAME at 96 range 0 .. 1023; end record; for GCT_PARTITION_NODE_TYPE'SIZE use 1792; GCT_PARTITION_NODE_TYPE_INIT : constant GCT_PARTITION_NODE_TYPE := (HD_PARTITION => GCT_NODE_TYPE_INIT, HWRPB => UNSIGNED_QUADWORD_ZERO, INCARNATION => UNSIGNED_QUADWORD_ZERO, PRIORITY => UNSIGNED_QUADWORD_ZERO, OS_TYPE => UNSIGNED_LONGWORD_ZERO, PART_RESERVED_1 => INTEGER_32_ZERO, INSTANCE_NAME => (others => 0)); GCT_K_COMM_BLOCK_SIZE : constant := 8; type GCT_COMMUNITY_NODE_TYPE is record HD_COMMUNITY : GCT_NODE_TYPE; GMDB : UNSIGNED_QUADWORD_ARRAY (1 .. 8); -- Communication block end record; for GCT_COMMUNITY_NODE_TYPE use record HD_COMMUNITY at 0 range 0 .. 511; GMDB at 64 range 0 .. 511; end record; for GCT_COMMUNITY_NODE_TYPE'SIZE use 1024; GCT_COMMUNITY_NODE_TYPE_INIT : constant GCT_COMMUNITY_NODE_TYPE := (HD_COMMUNITY => GCT_NODE_TYPE_INIT, GMDB => (others => UNSIGNED_QUADWORD_ZERO)); type GCT_MEMORY_SUB_NODE_TYPE is record HD_MEMORY_SUB : GCT_NODE_TYPE; MIN_PA : UNSIGNED_QUADWORD; -- Lowest possible PA in subsystem MAX_PA : UNSIGNED_QUADWORD; -- Highest possible PA in subsys end record; for GCT_MEMORY_SUB_NODE_TYPE use record HD_MEMORY_SUB at 0 range 0 .. 511; MIN_PA at 64 range 0 .. 63; MAX_PA at 72 range 0 .. 63; end record; for GCT_MEMORY_SUB_NODE_TYPE'SIZE use 640; GCT_MEMORY_SUB_NODE_TYPE_INIT : constant GCT_MEMORY_SUB_NODE_TYPE := (HD_MEMORY_SUB => GCT_NODE_TYPE_INIT, MIN_PA => UNSIGNED_QUADWORD_ZERO, MAX_PA => UNSIGNED_QUADWORD_ZERO); type GCT_MEMORY_CTRL_NODE_TYPE is record HD_MEMORY_CTRL : GCT_NODE_TYPE; end record; for GCT_MEMORY_CTRL_NODE_TYPE use record HD_MEMORY_CTRL at 0 range 0 .. 511; end record; for GCT_MEMORY_CTRL_NODE_TYPE'SIZE use 512; GCT_MEMORY_CTRL_NODE_TYPE_INIT : constant GCT_MEMORY_CTRL_NODE_TYPE := (HD_MEMORY_CTRL => GCT_NODE_TYPE_INIT); GCT_M_MEM_CONSOLE : constant := 16#00000001#; GCT_M_MEM_PRIVATE : constant := 16#00000002#; GCT_M_MEM_SHARED : constant := 16#00000004#; GCT_M_MEM_BASE : constant := 16#00000008#; GCT_M_MEM_VALID : constant := 16#00000010#; GCT_M_MEM_RSRVD_5_31 : constant := 16#FFFFFFE0#; type GCT_MEM_FLAGS_TYPE is -- flags record MEM_CONSOLE : BOOLEAN; -- Console memory MEM_PRIVATE : BOOLEAN; -- Private (non-shared) memory MEM_SHARED : BOOLEAN; -- Shared memory MEM_BASE : BOOLEAN; -- Base Segment memory MEM_VALID : BOOLEAN; -- Fragment is valid MEM_RSRVD_5_31 : UNSIGNED_27; -- Unused bits in longword end record; for GCT_MEM_FLAGS_TYPE use record MEM_CONSOLE at 0 range 0 .. 0; MEM_PRIVATE at 0 range 1 .. 1; MEM_SHARED at 0 range 2 .. 2; MEM_BASE at 0 range 3 .. 3; MEM_VALID at 0 range 4 .. 4; MEM_RSRVD_5_31 at 0 range 5 .. 31; end record; for GCT_MEM_FLAGS_TYPE'SIZE use 32; GCT_MEM_FLAGS_TYPE_INIT : constant GCT_MEM_FLAGS_TYPE := (MEM_CONSOLE => FALSE, MEM_PRIVATE => FALSE, MEM_SHARED => FALSE, MEM_BASE => FALSE, MEM_VALID => FALSE, MEM_RSRVD_5_31 => 0); type GCT_MEM_DESC_TYPE is record PA : UNSIGNED_QUADWORD; -- Base PA of memory fragment SIZE : UNSIGNED_QUADWORD; -- Size of memory fragment MEM_OWNER : GCT_HANDLE_TYPE; MEM_CURRENT_OWNER : GCT_HANDLE_TYPE; MEM_FLAGS : GCT_MEM_FLAGS_TYPE; -- flags MEM_RESERVED_1 : UNSIGNED_LONGWORD; -- Pad to a quad. Available for use. end record; for GCT_MEM_DESC_TYPE use record PA at 0 range 0 .. 63; SIZE at 8 range 0 .. 63; MEM_OWNER at 16 range 0 .. 31; MEM_CURRENT_OWNER at 20 range 0 .. 31; MEM_FLAGS at 24 range 0 .. 31; MEM_RESERVED_1 at 28 range 0 .. 31; end record; for GCT_MEM_DESC_TYPE'SIZE use 256; GCT_MEM_DESC_TYPE_INIT : constant GCT_MEM_DESC_TYPE := (PA => UNSIGNED_QUADWORD_ZERO, SIZE => UNSIGNED_QUADWORD_ZERO, --***INFO: (mem_owner (gct_mem_desc) ) Default wanted but not available MEM_OWNER => , --***INFO: (mem_current_owner (gct_mem_desc) ) Default wanted but not available MEM_CURRENT_OWNER => , MEM_FLAGS => GCT_MEM_FLAGS_TYPE_INIT, MEM_RESERVED_1 => UNSIGNED_LONGWORD_ZERO); type GCT_MEM_INFO_TYPE is record BASE_PA : UNSIGNED_QUADWORD; -- Base PA of desc BASE_SIZE : UNSIGNED_QUADWORD; -- Size of memory desc DESC_COUNT : UNSIGNED_LONGWORD; -- Number of fragments INFO_RESERVED : UNSIGNED_LONGWORD; -- Pad to a quad end record; for GCT_MEM_INFO_TYPE use record BASE_PA at 0 range 0 .. 63; BASE_SIZE at 8 range 0 .. 63; DESC_COUNT at 16 range 0 .. 31; INFO_RESERVED at 20 range 0 .. 31; end record; for GCT_MEM_INFO_TYPE'SIZE use 192; GCT_MEM_INFO_TYPE_INIT : constant GCT_MEM_INFO_TYPE := (BASE_PA => UNSIGNED_QUADWORD_ZERO, BASE_SIZE => UNSIGNED_QUADWORD_ZERO, DESC_COUNT => UNSIGNED_LONGWORD_ZERO, INFO_RESERVED => UNSIGNED_LONGWORD_ZERO); type GCT_MEM_DESC_NODE_TYPE is record HD_MEM_DESC : GCT_NODE_TYPE; MEM_INFO : GCT_MEM_INFO_TYPE; -- Mem desc header MEM_FRAG : INTEGER_32; -- Offset to descriptors MEM_DESC_RESERVED : INTEGER_32; -- Pad to a quad BITMAP_PA : UNSIGNED_QUADWORD; -- PA of memory bitmap or zero end record; for GCT_MEM_DESC_NODE_TYPE use record HD_MEM_DESC at 0 range 0 .. 511; MEM_INFO at 64 range 0 .. 191; MEM_FRAG at 88 range 0 .. 31; MEM_DESC_RESERVED at 92 range 0 .. 31; BITMAP_PA at 96 range 0 .. 63; end record; for GCT_MEM_DESC_NODE_TYPE'SIZE use 832; GCT_MEM_DESC_NODE_TYPE_INIT : constant GCT_MEM_DESC_NODE_TYPE := (HD_MEM_DESC => GCT_NODE_TYPE_INIT, MEM_INFO => GCT_MEM_INFO_TYPE_INIT, MEM_FRAG => INTEGER_32_ZERO, MEM_DESC_RESERVED => INTEGER_32_ZERO, BITMAP_PA => UNSIGNED_QUADWORD_ZERO); type GCT_PSEUDO_NODE_TYPE is record HD_PSEUDO : GCT_NODE_TYPE; end record; for GCT_PSEUDO_NODE_TYPE use record HD_PSEUDO at 0 range 0 .. 511; end record; for GCT_PSEUDO_NODE_TYPE'SIZE use 512; GCT_PSEUDO_NODE_TYPE_INIT : constant GCT_PSEUDO_NODE_TYPE := (HD_PSEUDO => GCT_NODE_TYPE_INIT); type GCT_POWER_ENV_NODE_TYPE is record HD_POWER_ENV : GCT_NODE_TYPE; end record; for GCT_POWER_ENV_NODE_TYPE use record HD_POWER_ENV at 0 range 0 .. 511; end record; for GCT_POWER_ENV_NODE_TYPE'SIZE use 512; GCT_POWER_ENV_NODE_TYPE_INIT : constant GCT_POWER_ENV_NODE_TYPE := (HD_POWER_ENV => GCT_NODE_TYPE_INIT); type GCT_FRU_INFO_TYPE is record FRU_INFO_DIAG_FLAG : UNSIGNED_LONGWORD; FRU_INFO_DIAG_INFO : UNSIGNED_LONGWORD; FRU_INFO_TLV : UNSIGNED_BYTE; -- start of TLVs for manufacturer, model, part_number, serial_number and -- firmware_revision. FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 6); end record; for GCT_FRU_INFO_TYPE use record FRU_INFO_DIAG_FLAG at 0 range 0 .. 31; FRU_INFO_DIAG_INFO at 4 range 0 .. 31; FRU_INFO_TLV at 8 range 0 .. 7; FILLER_1 at 9 range 0 .. 55; end record; for GCT_FRU_INFO_TYPE'SIZE use 128; GCT_FRU_INFO_TYPE_INIT : constant GCT_FRU_INFO_TYPE := (FRU_INFO_DIAG_FLAG => UNSIGNED_LONGWORD_ZERO, FRU_INFO_DIAG_INFO => UNSIGNED_LONGWORD_ZERO, FRU_INFO_TLV => 0, FILLER_1 => (others => 0)); type GCT_FRU_ROOT_NODE_TYPE is record HD_FRU_ROOT : GCT_NODE_TYPE; FRU_ROOT_INFO : GCT_FRU_INFO_TYPE; end record; for GCT_FRU_ROOT_NODE_TYPE use record HD_FRU_ROOT at 0 range 0 .. 511; FRU_ROOT_INFO at 64 range 0 .. 127; end record; for GCT_FRU_ROOT_NODE_TYPE'SIZE use 640; GCT_FRU_ROOT_NODE_TYPE_INIT : constant GCT_FRU_ROOT_NODE_TYPE := (HD_FRU_ROOT => GCT_NODE_TYPE_INIT, FRU_ROOT_INFO => GCT_FRU_INFO_TYPE_INIT); type GCT_FRU_DESC_NODE_TYPE is record HD_FRU_DESC : GCT_NODE_TYPE; FRU_DESC_INFO : GCT_FRU_INFO_TYPE; end record; for GCT_FRU_DESC_NODE_TYPE use record HD_FRU_DESC at 0 range 0 .. 511; FRU_DESC_INFO at 64 range 0 .. 127; end record; for GCT_FRU_DESC_NODE_TYPE'SIZE use 640; GCT_FRU_DESC_NODE_TYPE_INIT : constant GCT_FRU_DESC_NODE_TYPE := (HD_FRU_DESC => GCT_NODE_TYPE_INIT, FRU_DESC_INFO => GCT_FRU_INFO_TYPE_INIT); type GCT_SMB_NODE_TYPE is record HD_SMB : GCT_NODE_TYPE; end record; for GCT_SMB_NODE_TYPE use record HD_SMB at 0 range 0 .. 511; end record; for GCT_SMB_NODE_TYPE'SIZE use 512; GCT_SMB_NODE_TYPE_INIT : constant GCT_SMB_NODE_TYPE := (HD_SMB => GCT_NODE_TYPE_INIT); type GCT_CAB_NODE_TYPE is record HD_CAB : GCT_NODE_TYPE; end record; for GCT_CAB_NODE_TYPE use record HD_CAB at 0 range 0 .. 511; end record; for GCT_CAB_NODE_TYPE'SIZE use 512; GCT_CAB_NODE_TYPE_INIT : constant GCT_CAB_NODE_TYPE := (HD_CAB => GCT_NODE_TYPE_INIT); type GCT_CHASSIS_NODE_TYPE is record HD_CHASSIS : GCT_NODE_TYPE; end record; for GCT_CHASSIS_NODE_TYPE use record HD_CHASSIS at 0 range 0 .. 511; end record; for GCT_CHASSIS_NODE_TYPE'SIZE use 512; GCT_CHASSIS_NODE_TYPE_INIT : constant GCT_CHASSIS_NODE_TYPE := (HD_CHASSIS => GCT_NODE_TYPE_INIT); type GCT_SWITCH_NODE_TYPE is record HD_SWITCH : GCT_NODE_TYPE; end record; for GCT_SWITCH_NODE_TYPE use record HD_SWITCH at 0 range 0 .. 511; end record; for GCT_SWITCH_NODE_TYPE'SIZE use 512; GCT_SWITCH_NODE_TYPE_INIT : constant GCT_SWITCH_NODE_TYPE := (HD_SWITCH => GCT_NODE_TYPE_INIT); -- -- TLV strings... To access them -- you need to use the tag to understand -- the data type, the length to get the number of bytes. This structure -- contains: -- type GCT_TLV_TYPE is record TLV_TAG : UNSIGNED_WORD; -- The Type of data TLV_LENGTH : UNSIGNED_WORD; -- Its length TLV_VALUE : UNSIGNED_BYTE; -- The first byte(s) in the value FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 2); end record; for GCT_TLV_TYPE use record TLV_TAG at 0 range 0 .. 15; TLV_LENGTH at 2 range 0 .. 15; TLV_VALUE at 4 range 0 .. 7; FILLER_1 at 5 range 0 .. 23; end record; for GCT_TLV_TYPE'SIZE use 64; GCT_TLV_TYPE_INIT : constant GCT_TLV_TYPE := (TLV_TAG => UNSIGNED_WORD_ZERO, TLV_LENGTH => UNSIGNED_WORD_ZERO, TLV_VALUE => 0, FILLER_1 => (others => 0)); GCT_K_TLV_TAG_ISOLATIN1 : constant := 1; GCT_K_TLV_TAG_QUOTED : constant := 2; GCT_K_TLV_TAG_BINARY : constant := 3; GCT_K_TLV_TAG_UNICODE : constant := 4; -- -- define the diag_failure structure -- type GCT_DIAG_FAILURE_TYPE is record FAILURE_TYPE_REV : UNSIGNED_BYTE; -- type nibble (0:3) and revision (4:7) FAILURE_TEST : UNSIGNED_BYTE; -- Test FAILURE_SUBTEST : UNSIGNED_BYTE; -- Subtest code FAILURE_ERROR : UNSIGNED_BYTE; -- Error code end record; for GCT_DIAG_FAILURE_TYPE use record FAILURE_TYPE_REV at 0 range 0 .. 7; FAILURE_TEST at 1 range 0 .. 7; FAILURE_SUBTEST at 2 range 0 .. 7; FAILURE_ERROR at 3 range 0 .. 7; end record; for GCT_DIAG_FAILURE_TYPE'SIZE use 32; GCT_DIAG_FAILURE_TYPE_INIT : constant GCT_DIAG_FAILURE_TYPE := (FAILURE_TYPE_REV => 0, FAILURE_TEST => 0, FAILURE_SUBTEST => 0, FAILURE_ERROR => 0); GCT_K_DIAG_ST_NA : constant := 1; -- GCT_K_DIAG_ST_PASSED : constant := 1; -- GCT_K_DIAG_ST_RSRVD_03_31 : constant := -4; -- -- -- System Resource Configuration Subpacket header format -- type GCT_SUBPACK_TYPE is record SUBPACK_LENGTH : UNSIGNED_WORD; -- Length SUBPACK_CLASS : UNSIGNED_WORD; -- Class SUBPACK_TYPE : UNSIGNED_WORD; -- Type SUBPACK_REV : UNSIGNED_WORD; -- Revision SUBPACK_DIAG_FLAGS : UNSIGNED_LONGWORD; SUBPACK_DIAG_FAILURE : UNSIGNED_LONGWORD; end record; for GCT_SUBPACK_TYPE use record SUBPACK_LENGTH at 0 range 0 .. 15; SUBPACK_CLASS at 2 range 0 .. 15; SUBPACK_TYPE at 4 range 0 .. 15; SUBPACK_REV at 6 range 0 .. 15; SUBPACK_DIAG_FLAGS at 8 range 0 .. 31; SUBPACK_DIAG_FAILURE at 12 range 0 .. 31; end record; for GCT_SUBPACK_TYPE'SIZE use 128; GCT_SUBPACK_TYPE_INIT : constant GCT_SUBPACK_TYPE := (SUBPACK_LENGTH => UNSIGNED_WORD_ZERO, SUBPACK_CLASS => UNSIGNED_WORD_ZERO, SUBPACK_TYPE => UNSIGNED_WORD_ZERO, SUBPACK_REV => UNSIGNED_WORD_ZERO, SUBPACK_DIAG_FLAGS => UNSIGNED_LONGWORD_ZERO, SUBPACK_DIAG_FAILURE => UNSIGNED_LONGWORD_ZERO); -- -- Subpacket TYPE codes for CLASS 1 ( System Resource Conf Subpackets ) -- GCT_K_SUBPACK_UNUSED_1 : constant := 1; -- Used to be SYSTEM_PLATFORM GCT_K_SUBPACK_PROCESSOR : constant := 2; -- Processor GCT_K_SUBPACK_MEMORY : constant := 3; -- Memory GCT_K_SUBPACK_SYS_BUS_BRIDGE : constant := 4; -- GCT_K_SUBPACK_PCI_DEVICE : constant := 5; -- GCT_K_SUBPACK_UNUSED_6 : constant := 6; -- GCT_K_SUBPACK_CACHE : constant := 7; -- GCT_K_SUBPACK_POWER : constant := 8; -- GCT_K_SUBPACK_COOLING : constant := 9; -- GCT_K_SUBPACK_SYS_INIT_LOG : constant := 10; -- GCT_K_SUBPACK_UNUSED_11 : constant := 11; -- GCT_K_SUBPACK_UNUSED_12 : constant := 12; -- GCT_K_SUBPACK_VME : constant := 13; -- GCT_K_SUBPACK_SBB : constant := 14; -- GCT_K_SUBPACK_IOP : constant := 15; -- GCT_K_SUBPACK_HOSE : constant := 16; -- GCT_K_SUBPACK_BUS : constant := 17; -- GCT_K_SUBPACK_ISA_DEVICE : constant := 18; -- GCT_K_SUBPACK_USB_DEVICE : constant := 19; -- GCT_K_SUBPACK_CONSOLE : constant := 20; -- GCT_K_SUBPACK_POWER_ENVIR : constant := 21; -- GCT_K_SUBPACK_UNUSED_22 : constant := 22; -- GCT_K_SUBPACK_UNUSED_23 : constant := 23; -- GCT_K_SUBPACK_UNUSED_24 : constant := 24; -- GCT_K_SUBPACK_UNUSED_25 : constant := 25; -- GCT_K_SUBPACK_UNUSED_26 : constant := 26; -- GCT_K_SUBPACK_UNUSED_27 : constant := 27; -- GCT_K_SUBPACK_UNUSED_28 : constant := 28; -- GCT_K_SUBPACK_UNUSED_29 : constant := 29; -- GCT_K_SUBPACK_PCI_VPD : constant := 30; -- GCT_K_SUBPACK_SMB : constant := 31; -- GCT_K_SUBPACK_FIBRECHANNEL : constant := 32; -- GCT_K_SUBPACK_AGP : constant := 33; -- GCT_K_SUBPACK_IDE : constant := 34; -- GCT_K_SUBPACK_SCSI : constant := 35; -- GCT_K_SUBPACK_1394 : constant := 36; -- GCT_K_SUBPACK_SUPER_HIPPI : constant := 37; -- GCT_K_SUBPACK_MEMORY_DIR : constant := 38; -- GCT_K_SUBPACK_NUMA_PORT : constant := 39; -- GCT_K_SUBPACK_NUMA_SWITCH : constant := 40; -- GCT_K_SUBPACK_RMC : constant := 41; -- GCT_K_SUBPACK_SENSOR : constant := 42; -- GCT_K_SUBPACK_LAST : constant := 43; -- -- -- CPU Resource subpacket ( Class 1 Type 2 ) -- type GCT_SUBPKT_CPU_FRU5_TYPE is record CPU_SUB : GCT_SUBPACK_TYPE; CPU_ID : UNSIGNED_LONGWORD; CPU_FAMILY : UNSIGNED_LONGWORD; CPU_STATE : UNSIGNED_QUADWORD; CPU_OVMS_PALCODE_REV : UNSIGNED_QUADWORD; CPU_DUNIX_PALCODE_REV : UNSIGNED_QUADWORD; CPU_WNT_PALCODE_REV : UNSIGNED_QUADWORD; CPU_ALPHA_TYPE : UNSIGNED_QUADWORD; CPU_VARIATION : UNSIGNED_QUADWORD; CPU_MANUFACTURER : GCT_TLV_TYPE; CPU_SERIAL_NUMBER : GCT_TLV_TYPE; CPU_REVISION_LEVEL : GCT_TLV_TYPE; end record; for GCT_SUBPKT_CPU_FRU5_TYPE use record CPU_SUB at 0 range 0 .. 127; CPU_ID at 16 range 0 .. 31; CPU_FAMILY at 20 range 0 .. 31; CPU_STATE at 24 range 0 .. 63; CPU_OVMS_PALCODE_REV at 32 range 0 .. 63; CPU_DUNIX_PALCODE_REV at 40 range 0 .. 63; CPU_WNT_PALCODE_REV at 48 range 0 .. 63; CPU_ALPHA_TYPE at 56 range 0 .. 63; CPU_VARIATION at 64 range 0 .. 63; CPU_MANUFACTURER at 72 range 0 .. 63; CPU_SERIAL_NUMBER at 80 range 0 .. 63; CPU_REVISION_LEVEL at 88 range 0 .. 63; end record; for GCT_SUBPKT_CPU_FRU5_TYPE'SIZE use 768; GCT_SUBPKT_CPU_FRU5_TYPE_INIT : constant GCT_SUBPKT_CPU_FRU5_TYPE := (CPU_SUB => GCT_SUBPACK_TYPE_INIT, CPU_ID => UNSIGNED_LONGWORD_ZERO, CPU_FAMILY => UNSIGNED_LONGWORD_ZERO, CPU_STATE => UNSIGNED_QUADWORD_ZERO, CPU_OVMS_PALCODE_REV => UNSIGNED_QUADWORD_ZERO, CPU_DUNIX_PALCODE_REV => UNSIGNED_QUADWORD_ZERO, CPU_WNT_PALCODE_REV => UNSIGNED_QUADWORD_ZERO, CPU_ALPHA_TYPE => UNSIGNED_QUADWORD_ZERO, CPU_VARIATION => UNSIGNED_QUADWORD_ZERO, CPU_MANUFACTURER => GCT_TLV_TYPE_INIT, CPU_SERIAL_NUMBER => GCT_TLV_TYPE_INIT, CPU_REVISION_LEVEL => GCT_TLV_TYPE_INIT); -- -- MEMORY Resouce subpacket ( Class 1 Type 3) -- type GCT_SUBPKT_MEM_FRU5_TYPE is record MEM_SUB : GCT_SUBPACK_TYPE; MEM_ID : UNSIGNED_QUADWORD; FILLER_1 : UNSIGNED_LONGWORD; MEM_REGISTER_COUNT : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_MEM_FRU5_TYPE use record MEM_SUB at 0 range 0 .. 127; MEM_ID at 16 range 0 .. 63; FILLER_1 at 24 range 0 .. 31; MEM_REGISTER_COUNT at 28 range 0 .. 31; end record; for GCT_SUBPKT_MEM_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_MEM_FRU5_TYPE_INIT : constant GCT_SUBPKT_MEM_FRU5_TYPE := (MEM_SUB => GCT_SUBPACK_TYPE_INIT, MEM_ID => UNSIGNED_QUADWORD_ZERO, FILLER_1 => UNSIGNED_LONGWORD_ZERO, MEM_REGISTER_COUNT => UNSIGNED_LONGWORD_ZERO); -- -- BUSBRIDGE Resouce subpacket ( Class 1 Type 4) -- type GCT_SUBPKT_BRIDGE_FRU5_TYPE is record BRIDGE_SUB : GCT_SUBPACK_TYPE; BRIDGE_LEVEL : UNSIGNED_WORD; BRIDGE_TYPE : UNSIGNED_WORD; BRIDGE_REGISTER_COUNT : UNSIGNED_LONGWORD; BRIDGE_PHYSICAL_ADDR : UNSIGNED_QUADWORD; end record; for GCT_SUBPKT_BRIDGE_FRU5_TYPE use record BRIDGE_SUB at 0 range 0 .. 127; BRIDGE_LEVEL at 16 range 0 .. 15; BRIDGE_TYPE at 18 range 0 .. 15; BRIDGE_REGISTER_COUNT at 20 range 0 .. 31; BRIDGE_PHYSICAL_ADDR at 24 range 0 .. 63; end record; for GCT_SUBPKT_BRIDGE_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_BRIDGE_FRU5_TYPE_INIT : constant GCT_SUBPKT_BRIDGE_FRU5_TYPE := (BRIDGE_SUB => GCT_SUBPACK_TYPE_INIT, BRIDGE_LEVEL => UNSIGNED_WORD_ZERO, BRIDGE_TYPE => UNSIGNED_WORD_ZERO, BRIDGE_REGISTER_COUNT => UNSIGNED_LONGWORD_ZERO, BRIDGE_PHYSICAL_ADDR => UNSIGNED_QUADWORD_ZERO); GCT_K_BRIDGE_LVL_PRIMARY : constant := 1; GCT_K_BRIDGE_LVL_SECONDARY : constant := 2; GCT_K_BRIDGE_LVL_TERTIARY : constant := 3; GCT_K_BRIDGE_TYPE_HOSE : constant := 1; GCT_K_BRIDGE_TYPE_PCI : constant := 2; GCT_K_BRIDGE_TYPE_XMI : constant := 3; GCT_K_BRIDGE_TYPE_FBUS : constant := 4; GCT_K_BRIDGE_TYPE_VME : constant := 5; GCT_K_BRIDGE_TYPE_ISA : constant := 6; GCT_K_BRIDGE_TYPE_LAST : constant := 7; -- -- PCI Resouce subpacket ( Class 1 Type 5) -- type GCT_SUBPKT_PCI_FRU5_TYPE is record PCI_SUB : GCT_SUBPACK_TYPE; PCI_CONFIG_ADDR : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD0 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD1 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD2 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD3 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD4 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD5 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD6 : UNSIGNED_QUADWORD; PCI_CONFIG_HEAD7 : UNSIGNED_QUADWORD; end record; for GCT_SUBPKT_PCI_FRU5_TYPE use record PCI_SUB at 0 range 0 .. 127; PCI_CONFIG_ADDR at 16 range 0 .. 63; PCI_CONFIG_HEAD0 at 24 range 0 .. 63; PCI_CONFIG_HEAD1 at 32 range 0 .. 63; PCI_CONFIG_HEAD2 at 40 range 0 .. 63; PCI_CONFIG_HEAD3 at 48 range 0 .. 63; PCI_CONFIG_HEAD4 at 56 range 0 .. 63; PCI_CONFIG_HEAD5 at 64 range 0 .. 63; PCI_CONFIG_HEAD6 at 72 range 0 .. 63; PCI_CONFIG_HEAD7 at 80 range 0 .. 63; end record; for GCT_SUBPKT_PCI_FRU5_TYPE'SIZE use 704; GCT_SUBPKT_PCI_FRU5_TYPE_INIT : constant GCT_SUBPKT_PCI_FRU5_TYPE := (PCI_SUB => GCT_SUBPACK_TYPE_INIT, PCI_CONFIG_ADDR => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD0 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD1 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD2 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD3 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD4 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD5 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD6 => UNSIGNED_QUADWORD_ZERO, PCI_CONFIG_HEAD7 => UNSIGNED_QUADWORD_ZERO); -- -- Cache Resouce subpacket ( Class 1 Type 7 ) -- type GCT_SUBPKT_CACHE_FRU5_TYPE is record CACHE_SUB : GCT_SUBPACK_TYPE; CACHE_LEVEL : UNSIGNED_WORD; CACHE_SPEED : UNSIGNED_WORD; CACHE_SIZE : UNSIGNED_WORD; CACHE_SIZE_AVAIL : UNSIGNED_WORD; CACHE_WP : UNSIGNED_WORD; CACHE_EC : UNSIGNED_WORD; CACHE_TYPE : UNSIGNED_WORD; CACHE_STATE : UNSIGNED_WORD; end record; for GCT_SUBPKT_CACHE_FRU5_TYPE use record CACHE_SUB at 0 range 0 .. 127; CACHE_LEVEL at 16 range 0 .. 15; CACHE_SPEED at 18 range 0 .. 15; CACHE_SIZE at 20 range 0 .. 15; CACHE_SIZE_AVAIL at 22 range 0 .. 15; CACHE_WP at 24 range 0 .. 15; CACHE_EC at 26 range 0 .. 15; CACHE_TYPE at 28 range 0 .. 15; CACHE_STATE at 30 range 0 .. 15; end record; for GCT_SUBPKT_CACHE_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_CACHE_FRU5_TYPE_INIT : constant GCT_SUBPKT_CACHE_FRU5_TYPE := (CACHE_SUB => GCT_SUBPACK_TYPE_INIT, CACHE_LEVEL => UNSIGNED_WORD_ZERO, CACHE_SPEED => UNSIGNED_WORD_ZERO, CACHE_SIZE => UNSIGNED_WORD_ZERO, CACHE_SIZE_AVAIL => UNSIGNED_WORD_ZERO, CACHE_WP => UNSIGNED_WORD_ZERO, CACHE_EC => UNSIGNED_WORD_ZERO, CACHE_TYPE => UNSIGNED_WORD_ZERO, CACHE_STATE => UNSIGNED_WORD_ZERO); -- -- CACHE types -- GCT_K_CACHE_OTHER : constant := 1; -- GCT_K_CACHE_UNKNOWN : constant := 2; -- GCT_K_CACHE_LVL_PRIMARY : constant := 3; -- 1st level GCT_K_CACHE_LVL_SECONDARY : constant := 4; -- 2nd level GCT_K_CACHE_LVL_TERTIARY : constant := 5; -- 3rd level GCT_K_CACHE_LAST : constant := 6; -- GCT_K_CACHE_WP_WRITEBACK : constant := 3; GCT_K_CACHE_WP_WRITETHROUGH : constant := 4; GCT_K_CACHE_WP_LATEWRITE : constant := 5; GCT_K_CACHE_EC_NONE : constant := 3; GCT_K_CACHE_EC_PARITY : constant := 4; GCT_K_CACHE_EC_SINGLEBITECC : constant := 5; GCT_K_CACHE_EC_MULTIBITECC : constant := 6; GCT_K_CACHE_TYPE_INSTRUCTION : constant := 3; GCT_K_CACHE_TYPE_DATA : constant := 4; GCT_K_CACHE_TYPE_UNIFIED : constant := 5; GCT_K_CACHE_STAT_ENABLED : constant := 3; GCT_K_CACHE_STAT_DISABLED : constant := 4; GCT_K_CACHE_STAT_NOTAPPLY : constant := 5; -- -- Power Resouce subpacket ( Class 1 Type 8 ) -- type GCT_SUBPKT_POWER_FRU5_TYPE is record POWER_SUB : GCT_SUBPACK_TYPE; POWER_FRU_COUNT : UNSIGNED_LONGWORD; POWER_FRU : UNSIGNED_LONGWORD; POWER_TYPE : UNSIGNED_WORD; POWER_ID : UNSIGNED_WORD; POWER_STATUS : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_POWER_FRU5_TYPE use record POWER_SUB at 0 range 0 .. 127; POWER_FRU_COUNT at 16 range 0 .. 31; POWER_FRU at 20 range 0 .. 31; POWER_TYPE at 24 range 0 .. 15; POWER_ID at 26 range 0 .. 15; POWER_STATUS at 28 range 0 .. 31; end record; for GCT_SUBPKT_POWER_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_POWER_FRU5_TYPE_INIT : constant GCT_SUBPKT_POWER_FRU5_TYPE := (POWER_SUB => GCT_SUBPACK_TYPE_INIT, POWER_FRU_COUNT => UNSIGNED_LONGWORD_ZERO, POWER_FRU => UNSIGNED_LONGWORD_ZERO, POWER_TYPE => UNSIGNED_WORD_ZERO, POWER_ID => UNSIGNED_WORD_ZERO, POWER_STATUS => UNSIGNED_LONGWORD_ZERO); GCT_K_POWER_PS_TYPE_DC : constant := 1; GCT_K_POWER_PS_TYPE_AC : constant := 2; GCT_K_POWER_PS_TYPE_GNDCUR : constant := 3; GCT_K_POWER_PS_TYPE_BBU : constant := 4; GCT_K_POWER_PS_TYPE_UPS : constant := 5; -- -- Cooling Resouce subpacket ( Class 1 Type 9 ) -- type GCT_SUBPKT_COOLING_FRU5_TYPE is record COOLING_SUB : GCT_SUBPACK_TYPE; COOLING_FRU_COUNT : UNSIGNED_LONGWORD; COOLING_FRU : UNSIGNED_LONGWORD; COOLING_TYPE : UNSIGNED_WORD; COOLING_ID : UNSIGNED_WORD; COOLING_STATUS : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_COOLING_FRU5_TYPE use record COOLING_SUB at 0 range 0 .. 127; COOLING_FRU_COUNT at 16 range 0 .. 31; COOLING_FRU at 20 range 0 .. 31; COOLING_TYPE at 24 range 0 .. 15; COOLING_ID at 26 range 0 .. 15; COOLING_STATUS at 28 range 0 .. 31; end record; for GCT_SUBPKT_COOLING_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_COOLING_FRU5_TYPE_INIT : constant GCT_SUBPKT_COOLING_FRU5_TYPE := (COOLING_SUB => GCT_SUBPACK_TYPE_INIT, COOLING_FRU_COUNT => UNSIGNED_LONGWORD_ZERO, COOLING_FRU => UNSIGNED_LONGWORD_ZERO, COOLING_TYPE => UNSIGNED_WORD_ZERO, COOLING_ID => UNSIGNED_WORD_ZERO, COOLING_STATUS => UNSIGNED_LONGWORD_ZERO); -- -- Bus Resouce subpacket ( Class 1 Type 17 ) -- type GCT_SUBPKT_BUS_FRU5_TYPE is record BUS_SUB : GCT_SUBPACK_TYPE; BUS_ID : UNSIGNED_QUADWORD; FILLER_1 : UNSIGNED_LONGWORD; BUS_REGISTER_COUNT : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_BUS_FRU5_TYPE use record BUS_SUB at 0 range 0 .. 127; BUS_ID at 16 range 0 .. 63; FILLER_1 at 24 range 0 .. 31; BUS_REGISTER_COUNT at 28 range 0 .. 31; end record; for GCT_SUBPKT_BUS_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_BUS_FRU5_TYPE_INIT : constant GCT_SUBPKT_BUS_FRU5_TYPE := (BUS_SUB => GCT_SUBPACK_TYPE_INIT, BUS_ID => UNSIGNED_QUADWORD_ZERO, FILLER_1 => UNSIGNED_LONGWORD_ZERO, BUS_REGISTER_COUNT => UNSIGNED_LONGWORD_ZERO); -- -- CSL Resouce subpacket ( Class 1 Type 20 ) -- type GCT_SUBPKT_CSL_FRU5_TYPE is record CSL_SUB : GCT_SUBPACK_TYPE; CSL_RESET_REASON : UNSIGNED_LONGWORD; CSL_EV_COUNT : UNSIGNED_LONGWORD; CSL_SRM_PART_NUMBER : GCT_TLV_TYPE; CSL_SRM_REV : GCT_TLV_TYPE; CSL_ALPHABIOS_PART_NUMBER : GCT_TLV_TYPE; CSL_ALPHABIOS_REV : GCT_TLV_TYPE; end record; for GCT_SUBPKT_CSL_FRU5_TYPE use record CSL_SUB at 0 range 0 .. 127; CSL_RESET_REASON at 16 range 0 .. 31; CSL_EV_COUNT at 20 range 0 .. 31; CSL_SRM_PART_NUMBER at 24 range 0 .. 63; CSL_SRM_REV at 32 range 0 .. 63; CSL_ALPHABIOS_PART_NUMBER at 40 range 0 .. 63; CSL_ALPHABIOS_REV at 48 range 0 .. 63; end record; for GCT_SUBPKT_CSL_FRU5_TYPE'SIZE use 448; GCT_SUBPKT_CSL_FRU5_TYPE_INIT : constant GCT_SUBPKT_CSL_FRU5_TYPE := (CSL_SUB => GCT_SUBPACK_TYPE_INIT, CSL_RESET_REASON => UNSIGNED_LONGWORD_ZERO, CSL_EV_COUNT => UNSIGNED_LONGWORD_ZERO, CSL_SRM_PART_NUMBER => GCT_TLV_TYPE_INIT, CSL_SRM_REV => GCT_TLV_TYPE_INIT, CSL_ALPHABIOS_PART_NUMBER => GCT_TLV_TYPE_INIT, CSL_ALPHABIOS_REV => GCT_TLV_TYPE_INIT); GCT_K_CSL_UNKNOWN_RESET : constant := 0; GCT_K_CSL_SOFT_RESET : constant := 2; GCT_K_CSL_HARD_RESET : constant := 4; GCT_K_CSL_OCP_RESET : constant := 8; GCT_K_CSL_REMOTE_RESET : constant := 16; -- -- PCI VPD Resouce subpacket ( Class 1 Type 30 ) -- type GCT_SUBPKT_VPD_FRU5_TYPE is record VPD_SUB : GCT_SUBPACK_TYPE; VPD_LOAD_ID : UNSIGNED_QUADWORD; VPD_ROM_LEVEL : UNSIGNED_QUADWORD; VPD_ROM_REV : UNSIGNED_QUADWORD; VPD_NET_ADDR : UNSIGNED_QUADWORD; VPD_DEV_DRIV_LEVEL : UNSIGNED_QUADWORD; VPD_DIAG_LEVEL : UNSIGNED_QUADWORD; VPD_LOAD_UCODE_LEVEL : UNSIGNED_QUADWORD; VPD_BIN_FUNC_NUM : UNSIGNED_QUADWORD; end record; for GCT_SUBPKT_VPD_FRU5_TYPE use record VPD_SUB at 0 range 0 .. 127; VPD_LOAD_ID at 16 range 0 .. 63; VPD_ROM_LEVEL at 24 range 0 .. 63; VPD_ROM_REV at 32 range 0 .. 63; VPD_NET_ADDR at 40 range 0 .. 63; VPD_DEV_DRIV_LEVEL at 48 range 0 .. 63; VPD_DIAG_LEVEL at 56 range 0 .. 63; VPD_LOAD_UCODE_LEVEL at 64 range 0 .. 63; VPD_BIN_FUNC_NUM at 72 range 0 .. 63; end record; for GCT_SUBPKT_VPD_FRU5_TYPE'SIZE use 640; GCT_SUBPKT_VPD_FRU5_TYPE_INIT : constant GCT_SUBPKT_VPD_FRU5_TYPE := (VPD_SUB => GCT_SUBPACK_TYPE_INIT, VPD_LOAD_ID => UNSIGNED_QUADWORD_ZERO, VPD_ROM_LEVEL => UNSIGNED_QUADWORD_ZERO, VPD_ROM_REV => UNSIGNED_QUADWORD_ZERO, VPD_NET_ADDR => UNSIGNED_QUADWORD_ZERO, VPD_DEV_DRIV_LEVEL => UNSIGNED_QUADWORD_ZERO, VPD_DIAG_LEVEL => UNSIGNED_QUADWORD_ZERO, VPD_LOAD_UCODE_LEVEL => UNSIGNED_QUADWORD_ZERO, VPD_BIN_FUNC_NUM => UNSIGNED_QUADWORD_ZERO); -- -- SMB Resouce subpacket ( Class 1 Type 31 ) -- type GCT_SUBPKT_SMB_FRU5_TYPE is record SMB_SUB : GCT_SUBPACK_TYPE; SMB_ID : UNSIGNED_QUADWORD; FILLER_1 : UNSIGNED_LONGWORD; SMB_REGISTER_COUNT : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_SMB_FRU5_TYPE use record SMB_SUB at 0 range 0 .. 127; SMB_ID at 16 range 0 .. 63; FILLER_1 at 24 range 0 .. 31; SMB_REGISTER_COUNT at 28 range 0 .. 31; end record; for GCT_SUBPKT_SMB_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_SMB_FRU5_TYPE_INIT : constant GCT_SUBPKT_SMB_FRU5_TYPE := (SMB_SUB => GCT_SUBPACK_TYPE_INIT, SMB_ID => UNSIGNED_QUADWORD_ZERO, FILLER_1 => UNSIGNED_LONGWORD_ZERO, SMB_REGISTER_COUNT => UNSIGNED_LONGWORD_ZERO); -- -- RMC Resouce subpacket ( Class 1 Type 41 ) -- type GCT_SUBPKT_RMC_FRU5_TYPE is record RMC_SUB : GCT_SUBPACK_TYPE; RMC_ID : UNSIGNED_QUADWORD; RMC_PIC_HW_REV : UNSIGNED_LONGWORD; RMC_PIC_FW_REV : UNSIGNED_LONGWORD; end record; for GCT_SUBPKT_RMC_FRU5_TYPE use record RMC_SUB at 0 range 0 .. 127; RMC_ID at 16 range 0 .. 63; RMC_PIC_HW_REV at 24 range 0 .. 31; RMC_PIC_FW_REV at 28 range 0 .. 31; end record; for GCT_SUBPKT_RMC_FRU5_TYPE'SIZE use 256; GCT_SUBPKT_RMC_FRU5_TYPE_INIT : constant GCT_SUBPKT_RMC_FRU5_TYPE := (RMC_SUB => GCT_SUBPACK_TYPE_INIT, RMC_ID => UNSIGNED_QUADWORD_ZERO, RMC_PIC_HW_REV => UNSIGNED_LONGWORD_ZERO, RMC_PIC_FW_REV => UNSIGNED_LONGWORD_ZERO); -- -- SENSOR Resouce subpacket ( Class 1 Type 42 ) -- GCT_M_SENSOR_PROP_STATUS : constant := 16#00000001#; GCT_M_SENSOR_PROP_VALUE : constant := 16#00000002#; GCT_M_SENSOR_PROP_WRITEABLE : constant := 16#00000004#; GCT_M_SENSOR_PROP_BITFIELD : constant := 16#00000008#; GCT_M_SENSOR_PROP_FILL : constant := 16#FFFFFFF0#; type GCT_SENSOR_CONSOLE_ID_TYPE is record SENSOR_CONSOLE_ID : UNSIGNED_LONGWORD; SENSOR_BITFIELD : UNSIGNED_LONGWORD; end record; for GCT_SENSOR_CONSOLE_ID_TYPE use record SENSOR_CONSOLE_ID at 0 range 0 .. 31; SENSOR_BITFIELD at 4 range 0 .. 31; end record; for GCT_SENSOR_CONSOLE_ID_TYPE'SIZE use 64; GCT_SENSOR_CONSOLE_ID_TYPE_INIT : constant GCT_SENSOR_CONSOLE_ID_TYPE := (SENSOR_CONSOLE_ID => UNSIGNED_LONGWORD_ZERO, SENSOR_BITFIELD => UNSIGNED_LONGWORD_ZERO); type GCT_SENSOR_PROP_TYPE is -- Sensor properties record SENSOR_PROP_STATUS : BOOLEAN; SENSOR_PROP_VALUE : BOOLEAN; SENSOR_PROP_WRITEABLE : BOOLEAN; SENSOR_PROP_BITFIELD : BOOLEAN; FILLER_1 : UNSIGNED_28; end record; for GCT_SENSOR_PROP_TYPE use record SENSOR_PROP_STATUS at 0 range 0 .. 0; SENSOR_PROP_VALUE at 0 range 1 .. 1; SENSOR_PROP_WRITEABLE at 0 range 2 .. 2; SENSOR_PROP_BITFIELD at 0 range 3 .. 3; FILLER_1 at 0 range 4 .. 31; end record; for GCT_SENSOR_PROP_TYPE'SIZE use 32; GCT_SENSOR_PROP_TYPE_INIT : constant GCT_SENSOR_PROP_TYPE := (SENSOR_PROP_STATUS => FALSE, SENSOR_PROP_VALUE => FALSE, SENSOR_PROP_WRITEABLE => FALSE, SENSOR_PROP_BITFIELD => FALSE, FILLER_1 => 0); type GCT_SUBPKT_SENSOR_FRU5_TYPE is record SENSOR_SUB : GCT_SUBPACK_TYPE; SENSOR_FRU_COUNT : UNSIGNED_LONGWORD; SENSOR_FRU_OFFSET : UNSIGNED_LONGWORD; SENSOR_CONSOLE_ID : GCT_SENSOR_CONSOLE_ID_TYPE; SENSOR_CLASS : UNSIGNED_LONGWORD; SENSOR_PROP : GCT_SENSOR_PROP_TYPE; -- Sensor properties end record; for GCT_SUBPKT_SENSOR_FRU5_TYPE use record SENSOR_SUB at 0 range 0 .. 127; SENSOR_FRU_COUNT at 16 range 0 .. 31; SENSOR_FRU_OFFSET at 20 range 0 .. 31; SENSOR_CONSOLE_ID at 24 range 0 .. 63; SENSOR_CLASS at 32 range 0 .. 31; SENSOR_PROP at 36 range 0 .. 31; end record; for GCT_SUBPKT_SENSOR_FRU5_TYPE'SIZE use 320; GCT_SUBPKT_SENSOR_FRU5_TYPE_INIT : constant GCT_SUBPKT_SENSOR_FRU5_TYPE := (SENSOR_SUB => GCT_SUBPACK_TYPE_INIT, SENSOR_FRU_COUNT => UNSIGNED_LONGWORD_ZERO, SENSOR_FRU_OFFSET => UNSIGNED_LONGWORD_ZERO, SENSOR_CONSOLE_ID => GCT_SENSOR_CONSOLE_ID_TYPE_INIT, SENSOR_CLASS => UNSIGNED_LONGWORD_ZERO, SENSOR_PROP => GCT_SENSOR_PROP_TYPE_INIT ); GCT_K_SENSOR_CLASS_FAN : constant := 1; GCT_K_SENSOR_CLASS_TEMPERATURE : constant := 2; GCT_K_SENSOR_CLASS_AC : constant := 3; GCT_K_SENSOR_CLASS_DC : constant := 4; GCT_K_SENSOR_CLASS_BATTERY : constant := 5; -- -- Define the header extension structure. Offset to by hd_extension -- in the common header. If zero, no extended header information is -- present for the node. -- type GCT_HD_EXT_TYPE is record HD_EXT_FRU_COUNT : UNSIGNED_LONGWORD; HD_EXT_FRU : GCT_HANDLE_TYPE; HD_EXT_SUBPKT_COUNT : UNSIGNED_LONGWORD; HD_EXT_SUBPKT_OFFSET : UNSIGNED_LONGWORD; end record; for GCT_HD_EXT_TYPE use record HD_EXT_FRU_COUNT at 0 range 0 .. 31; HD_EXT_FRU at 4 range 0 .. 31; HD_EXT_SUBPKT_COUNT at 8 range 0 .. 31; HD_EXT_SUBPKT_OFFSET at 12 range 0 .. 31; end record; for GCT_HD_EXT_TYPE'SIZE use 128; GCT_HD_EXT_TYPE_INIT : constant GCT_HD_EXT_TYPE := (HD_EXT_FRU_COUNT => UNSIGNED_LONGWORD_ZERO, --***INFO: (hd_ext_fru (gct_hd_ext) ) Default wanted but not available HD_EXT_FRU => , HD_EXT_SUBPKT_COUNT => UNSIGNED_LONGWORD_ZERO, HD_EXT_SUBPKT_OFFSET => UNSIGNED_LONGWORD_ZERO); GCT_K_NODE_HARDWARE : constant := 1; GCT_K_NODE_HOTSWAP : constant := 2; GCT_K_NODE_UNAVAILABLE : constant := 4; GCT_K_NODE_HW_TEMPLATE : constant := 8; GCT_K_NODE_INITIALIZED : constant := 16; GCT_K_NODE_CPU_PRIMARY : constant := 32; GCT_K_NODE_IN_CONSOLE : constant := 64; GCT_K_NODE_RSRVD_7_31 : constant := -128; end GCTDEF;