/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:27:06 by OpenVMS SDL EV3-3 */ /* Source: 18-MAY-1994 14:53:01 $1$DGA7274:[LIB_H.SRC]CRAMDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $CRAMDEF ***/ #ifndef __CRAMDEF_LOADED #define __CRAMDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*+ */ /* CRAM - CSR Register Access Mailbox */ /* */ /* The CSR register access mailbox describes the remote I/O CSR access to be */ /* performed. */ /* */ /*- */ #define CRAM$M_IN_USE 0x1 #define CRAM$M_DER 0x2 #define CRAM$M_CMD_VAL 0x3FFFFFFF #define CRAM$M_CMD_BRIDGE 0x40000000 #define CRAM$M_CMD_WRITE 0x80000000 #define CRAM$M_MBX_DONE 0x1 #define CRAM$M_MBX_ERROR 0x2 #define CRAM$K_LENGTH 128 /* Length of structure */ #define CRAM$S_CRAMDEF 128 /* Old CRAM size field for compatibility */ /* Define common command indices */ #define CRAMCMD$K_RDQUAD32 1 /* Quadword read in 32 bit space */ #define CRAMCMD$K_RDLONG32 2 /* Longword " " " " " */ #define CRAMCMD$K_RDWORD32 3 /* Word " " " " " */ #define CRAMCMD$K_RDBYTE32 4 /* Byte " " " " " */ #define CRAMCMD$K_WTQUAD32 5 /* Quadword write " " " " */ #define CRAMCMD$K_WTLONG32 6 /* Longword " " " " " */ #define CRAMCMD$K_WTWORD32 7 /* Word " " " " " */ #define CRAMCMD$K_WTBYTE32 8 /* Byte " " " " " */ #define CRAMCMD$K_RDQUAD64 9 /* Quadword read in 64 bit space */ #define CRAMCMD$K_RDLONG64 10 /* Longword " " " " " */ #define CRAMCMD$K_RDWORD64 11 /* Word " " " " " */ #define CRAMCMD$K_RDBYTE64 12 /* Byte " " " " " */ #define CRAMCMD$K_WTQUAD64 13 /* Quadword write " " " " */ #define CRAMCMD$K_WTLONG64 14 /* Longword " " " " " */ #define CRAMCMD$K_WTWORD64 15 /* Word " " " " " */ #define CRAMCMD$K_WTBYTE64 16 /* Byte " " " " " */ #define CRAMCMD$K_RDTRIBYTE32 17 /* Tribyte read " 32 " " */ #define CRAMCMD$K_WTTRIBYTE32 18 /* Tribyte write " 32 " " */ #define CRAMCMD$K_RDTRIBYTE64 19 /* Tribyte read " 64 " " */ #define CRAMCMD$K_WTTRIBYTE64 20 /* Tribyte write " 64 " " */ #define CRAMCMD$K_MININDEX 1 #define CRAMCMD$K_MAXINDEX 20 #ifdef __cplusplus /* Define structure prototypes */ struct _idb; struct _ucb; struct _adp; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _cram { #pragma __nomember_alignment struct _cram *cram$l_flink; /* Forward link */ struct _cram *cram$l_blink; /* Backward link */ unsigned short int cram$w_size; /* Structure size in bytes */ unsigned char cram$b_type; /* Structure type */ unsigned char cram$b_subtype; /* Structure subtype */ void *cram$l_mbpr; /* Address of MBPR */ unsigned __int64 cram$q_hw_mbx; /* PA of hardward mailbox */ unsigned __int64 cram$q_queue_time; /* Queue timeout time */ unsigned __int64 cram$q_wait_time; /* Wait timeout */ unsigned int cram$l_driver; /* Spare longword for driver */ struct _idb *cram$l_idb; /* Pointer to IDB */ struct _ucb *cram$l_ucb; /* Pointer to UCB */ __union { __union { unsigned int cram$l_cram_flags; /* Flags bitmask */ __struct { unsigned cram$v_in_use : 1; /* CRAM is valid */ unsigned cram$v_der : 1; /* Disable-error-reporting */ unsigned cram$v_fill_6_ : 6; } cram$r_fill_1_; } cram$r_fill_0_; } cram$r_cram_flags_overlay; struct _adp *cram$l_adp; /* Pointer to ADP */ char cram$b_filler1 [4]; /* This piece must be 64 byte aligned - this is the hardware mailbox */ __union { unsigned int cram$l_command; /* Bus command */ __union { unsigned int cram$l_cmd_bits; __struct { unsigned cram$v_cmd_val : 30; /* Remote bus command bits */ unsigned cram$v_cmd_bridge : 1; /* BRIDGE bit */ unsigned cram$v_cmd_write : 1; /* WRITE bit */ } cram$r_fill_3_; } cram$r_fill_2_; } cram$r_cmd_overlay; unsigned char cram$b_byte_mask; /* Active byte mask */ unsigned char cram$b_filler2; /* SBZ */ unsigned char cram$b_hose; /* I/O bus number */ unsigned char cram$b_filler3; /* SBZ */ unsigned __int64 cram$q_rbadr; /* Remote bus address */ __union { unsigned __int64 cram$q_wdata; /* Data to be written */ unsigned int cram$l_wdata; /* Data to be written */ unsigned short int cram$w_wdata; /* Data to be written */ unsigned char cram$b_wdata; /* Data to be written */ } cram$r_wdata_overlay; unsigned __int64 cram$q_filler4; /* SBZ */ __union { unsigned __int64 cram$q_rdata; /* Returned read data */ unsigned int cram$l_rdata; unsigned short int cram$w_rdata; unsigned char cram$b_rdata; } cram$r_rdata_overlay; __union { __union { unsigned short int cram$w_mbx_flags; /* Flags bitmask */ __struct { unsigned cram$v_mbx_done : 1; /* Mailbox operation completed */ unsigned cram$v_mbx_error : 1; /* Error in operation */ unsigned cram$v_fill_7_ : 6; } cram$r_fill_5_; } cram$r_fill_4_; } cram$r_mbx_flags_overlay; unsigned short int cram$w_error_bits [3]; /* Device specific error bits */ unsigned __int64 cram$q_filler5 [2]; /* SBZ */ } CRAM; #if !defined(__VAXC) #define cram$l_cram_flags cram$r_cram_flags_overlay.cram$r_fill_0_.cram$l_cram_flags #define cram$v_in_use cram$r_cram_flags_overlay.cram$r_fill_0_.cram$r_fill_1_.cram$v_in_use #define cram$v_der cram$r_cram_flags_overlay.cram$r_fill_0_.cram$r_fill_1_.cram$v_der #define cram$l_command cram$r_cmd_overlay.cram$l_command #define cram$l_cmd_bits cram$r_cmd_overlay.cram$r_fill_2_.cram$l_cmd_bits #define cram$v_cmd_val cram$r_cmd_overlay.cram$r_fill_2_.cram$r_fill_3_.cram$v_cmd_val #define cram$v_cmd_bridge cram$r_cmd_overlay.cram$r_fill_2_.cram$r_fill_3_.cram$v_cmd_bridge #define cram$v_cmd_write cram$r_cmd_overlay.cram$r_fill_2_.cram$r_fill_3_.cram$v_cmd_write #define cram$q_wdata cram$r_wdata_overlay.cram$q_wdata #define cram$l_wdata cram$r_wdata_overlay.cram$l_wdata #define cram$w_wdata cram$r_wdata_overlay.cram$w_wdata #define cram$b_wdata cram$r_wdata_overlay.cram$b_wdata #define cram$q_rdata cram$r_rdata_overlay.cram$q_rdata #define cram$l_rdata cram$r_rdata_overlay.cram$l_rdata #define cram$w_rdata cram$r_rdata_overlay.cram$w_rdata #define cram$b_rdata cram$r_rdata_overlay.cram$b_rdata #define cram$w_mbx_flags cram$r_mbx_flags_overlay.cram$r_fill_4_.cram$w_mbx_flags #define cram$v_mbx_done cram$r_mbx_flags_overlay.cram$r_fill_4_.cram$r_fill_5_.cram$v_mbx_done #define cram$v_mbx_error cram$r_mbx_flags_overlay.cram$r_fill_4_.cram$r_fill_5_.cram$v_mbx_error #endif /* #if !defined(__VAXC) */ /* Mailbox data structure used by hardware and bootstrap code */ #define HW_CRAM$M_MBX_DONE 0x1 #define HW_CRAM$M_MBX_ERROR 0x2 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _hw_cram { #pragma __nomember_alignment unsigned int hw_cram$l_command; /* Bus command */ unsigned char hw_cram$b_byte_mask; /* Active byte mask */ unsigned char hw_cram$b_filler6; /* SBZ */ unsigned char hw_cram$b_hose; /* I/O bus number */ unsigned char hw_cram$b_filler7; /* SBZ */ unsigned __int64 hw_cram$q_rbadr; /* Remote bus address */ unsigned __int64 hw_cram$q_wdata; /* Data to be written */ unsigned __int64 hw_cram$q_filler8; /* SBZ */ unsigned __int64 hw_cram$q_rdata; /* Returned read data */ __union { __union { unsigned short int hw_cram$w_mbx_flags; /* Flags bitmask */ __struct { unsigned hw_cram$v_mbx_done : 1; /* Mailbox operation completed */ unsigned hw_cram$v_mbx_error : 1; /* Error in operation */ unsigned hw_cram$v_fill_10_ : 6; } hw_cram$r_fill_9_; } hw_cram$r_fill_8_; } hw_cram$r_mbx_flags_overlay; unsigned short int hw_cram$w_error_bits [3]; /* Device specific error bits */ unsigned __int64 hw_cram$q_filler9 [2]; /* SBZ */ } HW_CRAM; #if !defined(__VAXC) #define hw_cram$w_mbx_flags hw_cram$r_mbx_flags_overlay.hw_cram$r_fill_8_.hw_cram$w_mbx_flags #define hw_cram$v_mbx_done hw_cram$r_mbx_flags_overlay.hw_cram$r_fill_8_.hw_cram$r_fill_9_.hw_cram$v_mbx_done #define hw_cram$v_mbx_error hw_cram$r_mbx_flags_overlay.hw_cram$r_fill_8_.hw_cram$r_fill_9_.hw_cram$v_mbx_error #endif /* #if !defined(__VAXC) */ #define HW_CRAM$K_LENGTH 64 /* Length of structure */ #define HW_CRAM$S_HW_CRAMDEF 64 /* Old HW_CRAM size field for compatibility */ /* Command table definition. Note -- the order of the longwords in the */ /* CMDARRAY vector must be the same as the order of the constant command */ /* indices defined above. */ /* */ #define CMDTABLEHEADER$K_LENGTH 12 #ifdef __cplusplus /* Define structure prototypes */ struct _adp; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _cmdtable { #pragma __nomember_alignment struct _adp *cmdtable$ps_adp; unsigned int cmdtable$l_bus_type; /* Bus Type */ unsigned short int cmdtable$w_size; /* Structure size in bytes */ unsigned char cmdtable$b_type; /* Structure type */ unsigned char cmdtable$b_subtype; /* Structure subtype */ #if defined(__VAXC) char cmdtable$l_cmd_vector[]; #else #define cmdtable$l_cmd_vector cmdtable$r_cmdarray #endif /* #if defined(__VAXC) */ __struct { unsigned int cramcmd$l_fill2; /* needed because command indices are one based */ unsigned int cramcmd$l_rdquad32; /* Quadword read in 32 bit space */ unsigned int cramcmd$l_rdlong32; /* Longword " " " " " */ unsigned int cramcmd$l_rdword32; /* Word " " " " " */ unsigned int cramcmd$l_rdbyte32; /* Byte " " " " " */ unsigned int cramcmd$l_wtquad32; /* Quadword write " " " " */ unsigned int cramcmd$l_wtlong32; /* Longword " " " " " */ unsigned int cramcmd$l_wtword32; /* Word " " " " " */ unsigned int cramcmd$l_wtbyte32; /* Byte " " " " " */ unsigned int cramcmd$l_rdquad64; /* Quadword read in 64 bit space */ unsigned int cramcmd$l_rdlong64; /* Longword " " " " " */ unsigned int cramcmd$l_rdword64; /* Word " " " " " */ unsigned int cramcmd$l_rdbyte64; /* Byte " " " " " */ unsigned int cramcmd$l_wtquad64; /* Quadword write " " " " */ unsigned int cramcmd$l_wtlong64; /* Longword " " " " " */ unsigned int cramcmd$l_wtword64; /* Word " " " " " */ unsigned int cramcmd$l_wtbyte64; /* Byte " " " " " */ unsigned int cramcmd$l_rdtribyte32; /* Tribyte read " 32 " " */ unsigned int cramcmd$l_wttribyte32; /* Tribyte write " 32 " " */ unsigned int cramcmd$l_rdtribyte64; /* Tribyte read " 64 " " */ unsigned int cramcmd$l_wttribyte64; /* Tribyte write " 64 " " */ } cmdtable$r_cmdarray; } CMDTABLE; #if !defined(__VAXC) #define cramcmd$l_rdquad32 cmdtable$r_cmdarray.cramcmd$l_rdquad32 #define cramcmd$l_rdlong32 cmdtable$r_cmdarray.cramcmd$l_rdlong32 #define cramcmd$l_rdword32 cmdtable$r_cmdarray.cramcmd$l_rdword32 #define cramcmd$l_rdbyte32 cmdtable$r_cmdarray.cramcmd$l_rdbyte32 #define cramcmd$l_wtquad32 cmdtable$r_cmdarray.cramcmd$l_wtquad32 #define cramcmd$l_wtlong32 cmdtable$r_cmdarray.cramcmd$l_wtlong32 #define cramcmd$l_wtword32 cmdtable$r_cmdarray.cramcmd$l_wtword32 #define cramcmd$l_wtbyte32 cmdtable$r_cmdarray.cramcmd$l_wtbyte32 #define cramcmd$l_rdquad64 cmdtable$r_cmdarray.cramcmd$l_rdquad64 #define cramcmd$l_rdlong64 cmdtable$r_cmdarray.cramcmd$l_rdlong64 #define cramcmd$l_rdword64 cmdtable$r_cmdarray.cramcmd$l_rdword64 #define cramcmd$l_rdbyte64 cmdtable$r_cmdarray.cramcmd$l_rdbyte64 #define cramcmd$l_wtquad64 cmdtable$r_cmdarray.cramcmd$l_wtquad64 #define cramcmd$l_wtlong64 cmdtable$r_cmdarray.cramcmd$l_wtlong64 #define cramcmd$l_wtword64 cmdtable$r_cmdarray.cramcmd$l_wtword64 #define cramcmd$l_wtbyte64 cmdtable$r_cmdarray.cramcmd$l_wtbyte64 #define cramcmd$l_rdtribyte32 cmdtable$r_cmdarray.cramcmd$l_rdtribyte32 #define cramcmd$l_wttribyte32 cmdtable$r_cmdarray.cramcmd$l_wttribyte32 #define cramcmd$l_rdtribyte64 cmdtable$r_cmdarray.cramcmd$l_rdtribyte64 #define cramcmd$l_wttribyte64 cmdtable$r_cmdarray.cramcmd$l_wttribyte64 #endif /* #if !defined(__VAXC) */ #define CMDTABLE$K_LENGTH 96 /* Length of structure */ #define CMDTABLE$S_CMDTABLEDEF 96 /* Old CMDTABLE size field for compatibility */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __CRAMDEF_LOADED */