⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shubio.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 5 页
字号:
 * Note: Crossbow only has ports for Widgets 8 through F, widget 0      * * refers to Crossbow's internal space.                                 * * This register contains the state elements per widget that are        * * necessary to manage the PIO flow control on Crosstalk and on the     * * Router Network. See the PIO Flow Control chapter for a complete      * * description of this register                                         * * The SPUR_WR bit requires some explanation. When this register is     * * written, the new value of the C field is captured in an internal     * * register so the hardware can remember what the programmer wrote      * * into the credit counter. The SPUR_WR bit sets whenever the C field   * * increments above this stored value, which indicates that there       * * have been more responses received than requests sent. The SPUR_WR    * * bit cannot be cleared until a value is written to the IPRBx          * * register; the write will correct the C field and capture its new     * * value in the internal register. Even if IECLR[E_PRB_x] is set, the   * * SPUR_WR bit will persist if IPRBx hasn't yet been written.           * * .    								* *									* ************************************************************************/typedef union ii_iprbf_u {	uint64_t ii_iprbf_regval;	struct {		uint64_t i_c:8;		uint64_t i_na:14;		uint64_t i_rsvd_2:2;		uint64_t i_nb:14;		uint64_t i_rsvd_1:2;		uint64_t i_m:2;		uint64_t i_f:1;		uint64_t i_of_cnt:5;		uint64_t i_error:1;		uint64_t i_rd_to:1;		uint64_t i_spur_wr:1;		uint64_t i_spur_rd:1;		uint64_t i_rsvd:11;		uint64_t i_mult_err:1;	} ii_iprbe_fld_s;} ii_iprbf_u_t;/************************************************************************ *									* *  This register specifies the timeout value to use for monitoring     * * Crosstalk credits which are used outbound to Crosstalk. An           * * internal counter called the Crosstalk Credit Timeout Counter         * * increments every 128 II clocks. The counter starts counting          * * anytime the credit count drops below a threshold, and resets to      * * zero (stops counting) anytime the credit count is at or above the    * * threshold. The threshold is 1 credit in direct connect mode and 2    * * in Crossbow connect mode. When the internal Crosstalk Credit         * * Timeout Counter reaches the value programmed in this register, a     * * Crosstalk Credit Timeout has occurred. The internal counter is not   * * readable from software, and stops counting at its maximum value,     * * so it cannot cause more than one interrupt.                          * *									* ************************************************************************/typedef union ii_ixcc_u {	uint64_t ii_ixcc_regval;	struct {		uint64_t i_time_out:26;		uint64_t i_rsvd:38;	} ii_ixcc_fld_s;} ii_ixcc_u_t;/************************************************************************ *									* * Description:  This register qualifies all the PIO and DMA            * * operations launched from widget 0 towards the SHub. In               * * addition, it also qualifies accesses by the BTE streams.             * * The bits in each field of this register are cleared by the SHub      * * upon detection of an error which requires widget 0 or the BTE        * * streams to be terminated. Whether or not widget x has access         * * rights to this SHub is determined by an AND of the device            * * enable bit in the appropriate field of this register and bit 0 in    * * the Wx_IAC field. The bits in this field are set by writing a 1 to   * * them. Incoming replies from Crosstalk are not subject to this        * * access control mechanism.                                            * *									* ************************************************************************/typedef union ii_imem_u {	uint64_t ii_imem_regval;	struct {		uint64_t i_w0_esd:1;		uint64_t i_rsvd_3:3;		uint64_t i_b0_esd:1;		uint64_t i_rsvd_2:3;		uint64_t i_b1_esd:1;		uint64_t i_rsvd_1:3;		uint64_t i_clr_precise:1;		uint64_t i_rsvd:51;	} ii_imem_fld_s;} ii_imem_u_t;/************************************************************************ *									* * Description:  This register specifies the timeout value to use for   * * monitoring Crosstalk tail flits coming into the Shub in the          * * TAIL_TO field. An internal counter associated with this register     * * is incremented every 128 II internal clocks (7 bits). The counter    * * starts counting anytime a header micropacket is received and stops   * * counting (and resets to zero) any time a micropacket with a Tail     * * bit is received. Once the counter reaches the threshold value        * * programmed in this register, it generates an interrupt to the        * * processor that is programmed into the IIDSR. The counter saturates   * * (does not roll over) at its maximum value, so it cannot cause        * * another interrupt until after it is cleared.                         * * The register also contains the Read Response Timeout values. The     * * Prescalar is 23 bits, and counts II clocks. An internal counter      * * increments on every II clock and when it reaches the value in the    * * Prescalar field, all IPRTE registers with their valid bits set       * * have their Read Response timers bumped. Whenever any of them match   * * the value in the RRSP_TO field, a Read Response Timeout has          * * occurred, and error handling occurs as described in the Error        * * Handling section of this document.                                   * *									* ************************************************************************/typedef union ii_ixtt_u {	uint64_t ii_ixtt_regval;	struct {		uint64_t i_tail_to:26;		uint64_t i_rsvd_1:6;		uint64_t i_rrsp_ps:23;		uint64_t i_rrsp_to:5;		uint64_t i_rsvd:4;	} ii_ixtt_fld_s;} ii_ixtt_u_t;/************************************************************************ *									* *  Writing a 1 to the fields of this register clears the appropriate   * * error bits in other areas of SHub. Note that when the                * * E_PRB_x bits are used to clear error bits in PRB registers,          * * SPUR_RD and SPUR_WR may persist, because they require additional     * * action to clear them. See the IPRBx and IXSS Register                * * specifications.                                                      * *									* ************************************************************************/typedef union ii_ieclr_u {	uint64_t ii_ieclr_regval;	struct {		uint64_t i_e_prb_0:1;		uint64_t i_rsvd:7;		uint64_t i_e_prb_8:1;		uint64_t i_e_prb_9:1;		uint64_t i_e_prb_a:1;		uint64_t i_e_prb_b:1;		uint64_t i_e_prb_c:1;		uint64_t i_e_prb_d:1;		uint64_t i_e_prb_e:1;		uint64_t i_e_prb_f:1;		uint64_t i_e_crazy:1;		uint64_t i_e_bte_0:1;		uint64_t i_e_bte_1:1;		uint64_t i_reserved_1:10;		uint64_t i_spur_rd_hdr:1;		uint64_t i_cam_intr_to:1;		uint64_t i_cam_overflow:1;		uint64_t i_cam_read_miss:1;		uint64_t i_ioq_rep_underflow:1;		uint64_t i_ioq_req_underflow:1;		uint64_t i_ioq_rep_overflow:1;		uint64_t i_ioq_req_overflow:1;		uint64_t i_iiq_rep_overflow:1;		uint64_t i_iiq_req_overflow:1;		uint64_t i_ii_xn_rep_cred_overflow:1;		uint64_t i_ii_xn_req_cred_overflow:1;		uint64_t i_ii_xn_invalid_cmd:1;		uint64_t i_xn_ii_invalid_cmd:1;		uint64_t i_reserved_2:21;	} ii_ieclr_fld_s;} ii_ieclr_u_t;/************************************************************************ *									* *  This register controls both BTEs. SOFT_RESET is intended for        * * recovery after an error. COUNT controls the total number of CRBs     * * that both BTEs (combined) can use, which affects total BTE           * * bandwidth.                                                           * *									* ************************************************************************/typedef union ii_ibcr_u {	uint64_t ii_ibcr_regval;	struct {		uint64_t i_count:4;		uint64_t i_rsvd_1:4;		uint64_t i_soft_reset:1;		uint64_t i_rsvd:55;	} ii_ibcr_fld_s;} ii_ibcr_u_t;/************************************************************************ *									* *  This register contains the header of a spurious read response       * * received from Crosstalk. A spurious read response is defined as a    * * read response received by II from a widget for which (1) the SIDN    * * has a value between 1 and 7, inclusive (II never sends requests to   * * these widgets (2) there is no valid IPRTE register which             * * corresponds to the TNUM, or (3) the widget indicated in SIDN is      * * not the same as the widget recorded in the IPRTE register            * * referenced by the TNUM. If this condition is true, and if the        * * IXSS[VALID] bit is clear, then the header of the spurious read       * * response is capture in IXSM and IXSS, and IXSS[VALID] is set. The    * * errant header is thereby captured, and no further spurious read      * * respones are captured until IXSS[VALID] is cleared by setting the    * * appropriate bit in IECLR.Everytime a spurious read response is       * * detected, the SPUR_RD bit of the PRB corresponding to the incoming   * * message's SIDN field is set. This always happens, regarless of       * * whether a header is captured. The programmer should check            * * IXSM[SIDN] to determine which widget sent the spurious response,     * * because there may be more than one SPUR_RD bit set in the PRB        * * registers. The widget indicated by IXSM[SIDN] was the first          * * spurious read response to be received since the last time            * * IXSS[VALID] was clear. The SPUR_RD bit of the corresponding PRB      * * will be set. Any SPUR_RD bits in any other PRB registers indicate    * * spurious messages from other widets which were detected after the    * * header was captured..                                                * *									* ************************************************************************/typedef union ii_ixsm_u {	uint64_t ii_ixsm_regval;	struct {		uint64_t i_byte_en:32;		uint64_t i_reserved:1;		uint64_t i_tag:3;		uint64_t i_alt_pactyp:4;		uint64_t i_bo:1;		uint64_t i_error:1;		uint64_t i_vbpm:1;		uint64_t i_gbr:1;		uint64_t i_ds:2;		uint64_t i_ct:1;		uint64_t i_tnum:5;		uint64_t i_pactyp:4;		uint64_t i_sidn:4;		uint64_t i_didn:4;	} ii_ixsm_fld_s;} ii_ixsm_u_t;/************************************************************************ *									* *  This register contains the sideband bits of a spurious read         * * response received from Crosstalk.                                    * *									* ************************************************************************/typedef union ii_ixss_u {	uint64_t ii_ixss_regval;	struct {		uint64_t i_sideband:8;		uint64_t i_rsvd:55;		uint64_t i_valid:1;	} ii_ixss_fld_s;} ii_ixss_u_t;/************************************************************************ *									* *  This register enables software to access the II LLP's test port.    * * Refer to the LLP 2.5 documentation for an explanation of the test    * * port. Software can write to this register to program the values      * * for the control fields (TestErrCapture, TestClear, TestFlit,         * * TestMask and TestSeed). Similarly, software can read from this       * * register to obtain the values of the test port's status outputs      * * (TestCBerr, TestValid and TestData).                                 * *									* ************************************************************************/typedef union ii_ilct_u {	uint64_t ii_ilct_regval;	struct {		uint64_t i_test_seed:20;		uint64_t i_test_mask:8;		uint64_t i_test_data:20;		uint64_t i_test_valid:1;		uint64_t i_test_cberr:1;		uint64_t i_test_flit:3;		uint64_t i_test_clear:1;		uint64_t i_test_err_capture:1;		uint64_t i_rsvd:9;	} ii_ilct_fld_s;} ii_ilct_u_t;/************************************************************************ *									* *  If the II detects an illegal incoming Duplonet packet (request or   * * reply) when VALID==0 in the IIEPH1 register, then it saves the       * * contents of the packet's header flit in the IIEPH1 and 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -