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

📄 hubpi_next.h

📁 上传linux-jx2410的源代码
💻 H
字号:
/* $Id: hubpi_next.h,v 1.1.1.1 2004/02/04 12:57:43 laputa Exp $ * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc. * Copyright (C) 2000 by Colin Ngam */#ifndef _ASM_SN_SN1_HUBPI_NEXT_H#define _ASM_SN_SN1_HUBPI_NEXT_H/* define for remote PI_1 space. It is always half of a node_addressspace * from PI_0. The normal REMOTE_HUB space for PI registers access * the PI_0 space, unless they are qualified by PI_1. */#define PI_0(x)			(x)#define PI_1(x)			((x) + 0x200000)#define PIREG(x,sn)		((sn) ? PI_1(x) : PI_0(x))#define PI_MIN_STACK_SIZE 4096  /* For figuring out the size to set */#define PI_STACK_SIZE_SHFT      12      /* 4k */#define PI_STACKADDR_OFFSET     (PI_ERR_STACK_ADDR_B - PI_ERR_STACK_ADDR_A)#define PI_ERRSTAT_OFFSET       (PI_ERR_STATUS0_B - PI_ERR_STATUS0_A)#define PI_RDCLR_OFFSET         (PI_ERR_STATUS0_A_RCLR - PI_ERR_STATUS0_A)/* these macros are correct, but fix their users to understand two PIs   and 4 CPUs (slices) per bedrock */#define PI_INT_MASK_OFFSET      (PI_INT_MASK0_B - PI_INT_MASK0_A)#define PI_INT_SET_OFFSET       (PI_CC_PEND_CLR_B - PI_CC_PEND_CLR_A)#define PI_NMI_OFFSET		(PI_NMI_B - PI_NMI_A)#define ERR_STACK_SIZE_BYTES(_sz) \       ((_sz) ? (PI_MIN_STACK_SIZE << ((_sz) - 1)) : 0)#define PI_CRB_STS_P	(1 << 9) 	/* "P" (partial word read/write) bit */#define PI_CRB_STS_V	(1 << 8)	/* "V" (valid) bit */#define PI_CRB_STS_R	(1 << 7)	/* "R" (response data sent to CPU) */#define PI_CRB_STS_A	(1 << 6)	/* "A" (data ack. received) bit */#define PI_CRB_STS_W	(1 << 5)	/* "W" (waiting for write compl.) */#define PI_CRB_STS_H	(1 << 4)	/* "H" (gathering invalidates) bit */#define PI_CRB_STS_I	(1 << 3)	/* "I" (targ. inbound invalidate) */#define PI_CRB_STS_T	(1 << 2)	/* "T" (targ. inbound intervention) */#define PI_CRB_STS_E	(0x3)		/* "E" (coherent read type) *//* When the "P" bit is set in the sk_crb_sts field of an error stack * entry, the "R," "A," "H," and "I" bits are actually bits 6..3 of * the address.  This macro extracts those address bits and shifts * them to their proper positions, ready to be ORed in to the rest of * the address (which is calculated as sk_addr << 7). */#define PI_CRB_STS_ADDR_BITS(sts) \    ((sts) & (PI_CRB_STS_I | PI_CRB_STS_H) | \     ((sts) & (PI_CRB_STS_A | PI_CRB_STS_R)) >> 1)#ifdef _LANGUAGE_C/* * format of error stack and error status registers. */#ifdef LITTLE_ENDIANstruct err_stack_format {        uint64_t      sk_err_type:  3,   /* error type        */                        sk_suppl   :  3,   /* lowest 3 bit of supplemental */                        sk_t5_req  :  3,   /* RRB T5 request number */                        sk_crb_num :  3,   /* WRB (0 to 7) or RRB (0 to 4) */                        sk_rw_rb   :  1,   /* RRB == 0, WRB == 1 */                        sk_crb_sts : 10,   /* status from RRB or WRB */                        sk_cmd     :  8,   /* message command */			sk_addr    : 33;   /* address */};#elsestruct err_stack_format {	uint64_t	sk_addr	   : 33,   /* address */			sk_cmd	   :  8,   /* message command */			sk_crb_sts : 10,   /* status from RRB or WRB */			sk_rw_rb   :  1,   /* RRB == 0, WRB == 1 */			sk_crb_num :  3,   /* WRB (0 to 7) or RRB (0 to 4) */			sk_t5_req  :  3,   /* RRB T5 request number */			sk_suppl   :  3,   /* lowest 3 bit of supplemental */			sk_err_type:  3;   /* error type	*/};#endiftypedef union pi_err_stack {        uint64_t      pi_stk_word;        struct  err_stack_format pi_stk_fmt;} pi_err_stack_t;/* Simplified version of pi_err_status0_a_u_t (PI_ERR_STATUS0_A) */#ifdef LITTLE_ENDIANstruct err_status0_format {	uint64_t	s0_err_type	:  3,	/* Encoded error cause */                        s0_proc_req_num :  3,   /* Request number for RRB only */                        s0_supplemental : 11,   /* ncoming message sup field */                        s0_cmd          :  8,   /* Incoming message command */                        s0_addr         : 37,   /* Address */                        s0_over_run     :  1,   /* Subsequent errors spooled */			s0_valid        :  1;   /* error is valid */};#elsestruct err_status0_format {	uint64_t	s0_valid	:  1,	/* error is valid */			s0_over_run	:  1,	/* Subsequent errors spooled */			s0_addr		: 37,	/* Address */			s0_cmd		:  8,	/* Incoming message command */			s0_supplemental : 11,	/* ncoming message sup field */			s0_proc_req_num :  3,	/* Request number for RRB only */			s0_err_type	:  3;	/* Encoded error cause */};#endiftypedef union pi_err_stat0 {	uint64_t	pi_stat0_word;        struct err_status0_format pi_stat0_fmt;} pi_err_stat0_t;/* Simplified version of pi_err_status1_a_u_t (PI_ERR_STATUS1_A) */#ifdef LITTLE_ENDIANstruct err_status1_format {	 uint64_t	s1_spl_cnt : 21,   /* number spooled to memory */                        s1_to_cnt  :  8,   /* crb timeout counter */                        s1_inval_cnt:10,   /* signed invalidate counter RRB */                        s1_crb_num :  3,   /* WRB (0 to 7) or RRB (0 to 4) */                        s1_rw_rb   :  1,   /* RRB == 0, WRB == 1 */                        s1_crb_sts : 10,   /* status from RRB or WRB */			s1_src     : 11;   /* message source */};#elsestruct err_status1_format {	uint64_t	s1_src	   : 11,   /* message source */			s1_crb_sts : 10,   /* status from RRB or WRB */			s1_rw_rb   :  1,   /* RRB == 0, WRB == 1 */			s1_crb_num :  3,   /* WRB (0 to 7) or RRB (0 to 4) */			s1_inval_cnt:10,   /* signed invalidate counter RRB */			s1_to_cnt  :  8,   /* crb timeout counter */			s1_spl_cnt : 21;   /* number spooled to memory */};#endiftypedef union pi_err_stat1 {	uint64_t	pi_stat1_word;	struct err_status1_format pi_stat1_fmt;} pi_err_stat1_t;#endif/* Error stack types (sk_err_type) for reads:	*/#define PI_ERR_RD_AERR		0	/* Read Access Error */#define PI_ERR_RD_PRERR         1	/* Uncached Partitial Read */#define PI_ERR_RD_DERR          2	/* Directory Error */#define PI_ERR_RD_TERR          3	/* read timeout */#define PI_ERR_RD_PERR		4	/* Poison Access Violation */#define PI_ERR_RD_NACK		5	/* Excessive NACKs	*/#define PI_ERR_RD_RDE		6	/* Response Data Error	*/#define PI_ERR_RD_PLERR		7	/* Packet Length Error *//* Error stack types (sk_err_type) for writes:	*/#define PI_ERR_WR_WERR          0	/* Write Access Error */#define PI_ERR_WR_PWERR         1	/* Uncached Write Error */#define PI_ERR_WR_TERR          3	/* write timeout */#define PI_ERR_WR_RDE		6	/* Response Data Error */#define PI_ERR_WR_PLERR		7	/* Packet Length Error *//* For backwards compatibility */#define PI_RT_COUNT	PI_RT_COUNTER    /* Real Time Counter 		    */#define PI_RT_EN_A	PI_RT_INT_EN_A   /* RT int for CPU A enable         */#define PI_RT_EN_B	PI_RT_INT_EN_B   /* RT int for CPU B enable         */#define PI_PROF_EN_A	PI_PROF_INT_EN_A /* PROF int for CPU A enable       */#define PI_PROF_EN_B	PI_PROF_INT_EN_B /* PROF int for CPU B enable       */#define PI_RT_PEND_A    PI_RT_INT_PEND_A /* RT interrupt pending 	    */#define PI_RT_PEND_B    PI_RT_INT_PEND_B /* RT interrupt pending 	    */#define PI_PROF_PEND_A  PI_PROF_INT_PEND_A /* Profiling interrupt pending   */#define PI_PROF_PEND_B  PI_PROF_INT_PEND_B /* Profiling interrupt pending   *//* Bits in PI_SYSAD_ERRCHK_EN */#define PI_SYSAD_ERRCHK_ECCGEN  0x01    /* Enable ECC generation            */#define PI_SYSAD_ERRCHK_QUALGEN 0x02    /* Enable data quality signal gen.  */#define PI_SYSAD_ERRCHK_SADP    0x04    /* Enable SysAD parity checking     */#define PI_SYSAD_ERRCHK_CMDP    0x08    /* Enable SysCmd parity checking    */#define PI_SYSAD_ERRCHK_STATE   0x10    /* Enable SysState parity checking  */#define PI_SYSAD_ERRCHK_QUAL    0x20    /* Enable data quality checking     */#define PI_SYSAD_CHECK_ALL      0x3f    /* Generate and check all signals.  *//* CALIAS values */#define PI_CALIAS_SIZE_0        0#define PI_CALIAS_SIZE_4K       1#define PI_CALIAS_SIZE_8K       2#define PI_CALIAS_SIZE_16K      3#define PI_CALIAS_SIZE_32K      4#define PI_CALIAS_SIZE_64K      5#define PI_CALIAS_SIZE_128K     6#define PI_CALIAS_SIZE_256K     7#define PI_CALIAS_SIZE_512K     8#define PI_CALIAS_SIZE_1M       9#define PI_CALIAS_SIZE_2M       10#define PI_CALIAS_SIZE_4M       11#define PI_CALIAS_SIZE_8M       12#define PI_CALIAS_SIZE_16M      13#define PI_CALIAS_SIZE_32M      14#define PI_CALIAS_SIZE_64M      15/* Fields in PI_ERR_STATUS0_[AB] */#define PI_ERR_ST0_VALID_MASK	0x8000000000000000#define PI_ERR_ST0_VALID_SHFT	63/* Fields in PI_SPURIOUS_HDR_0 */#define PI_SPURIOUS_HDR_VALID_MASK	0x8000000000000000#define PI_SPURIOUS_HDR_VALID_SHFT	63/* Fields in PI_NACK_CNT_A/B */#define PI_NACK_CNT_EN_SHFT	20#define PI_NACK_CNT_EN_MASK	0x100000#define PI_NACK_CNT_MASK	0x0fffff#define PI_NACK_CNT_MAX		0x0fffff/* Bits in PI_ERR_INT_PEND */#define PI_ERR_SPOOL_CMP_B	0x000000001	/* Spool end hit high water */#define PI_ERR_SPOOL_CMP_A	0x000000002#define PI_ERR_SPUR_MSG_B	0x000000004	/* Spurious message intr.   */#define PI_ERR_SPUR_MSG_A	0x000000008#define PI_ERR_WRB_TERR_B	0x000000010	/* WRB TERR		    */#define PI_ERR_WRB_TERR_A	0x000000020#define PI_ERR_WRB_WERR_B	0x000000040	/* WRB WERR 		    */#define PI_ERR_WRB_WERR_A	0x000000080#define PI_ERR_SYSSTATE_B	0x000000100	/* SysState parity error    */#define PI_ERR_SYSSTATE_A	0x000000200#define PI_ERR_SYSAD_DATA_B	0x000000400	/* SysAD data parity error  */#define PI_ERR_SYSAD_DATA_A	0x000000800#define PI_ERR_SYSAD_ADDR_B	0x000001000	/* SysAD addr parity error  */#define PI_ERR_SYSAD_ADDR_A	0x000002000#define PI_ERR_SYSCMD_DATA_B	0x000004000	/* SysCmd data parity error */#define PI_ERR_SYSCMD_DATA_A	0x000008000#define PI_ERR_SYSCMD_ADDR_B	0x000010000	/* SysCmd addr parity error */#define PI_ERR_SYSCMD_ADDR_A	0x000020000#define PI_ERR_BAD_SPOOL_B	0x000040000	/* Error spooling to memory */#define PI_ERR_BAD_SPOOL_A	0x000080000#define PI_ERR_UNCAC_UNCORR_B	0x000100000	/* Uncached uncorrectable   */#define PI_ERR_UNCAC_UNCORR_A	0x000200000#define PI_ERR_SYSSTATE_TAG_B	0x000400000	/* SysState tag parity error */#define PI_ERR_SYSSTATE_TAG_A	0x000800000#define PI_ERR_MD_UNCORR	0x001000000	/* Must be cleared in MD    */#define PI_ERR_SYSAD_BAD_DATA_B	0x002000000	/* SysAD Data quality bad   */#define PI_ERR_SYSAD_BAD_DATA_A	0x004000000#define PI_ERR_UE_CACHED_B	0x008000000	/* UE during cached load    */#define PI_ERR_UE_CACHED_A	0x010000000#define PI_ERR_PKT_LEN_ERR_B	0x020000000	/* Xbar data too long/short */#define PI_ERR_PKT_LEN_ERR_A	0x040000000#define PI_ERR_IRB_ERR_B	0x080000000	/* Protocol error           */#define PI_ERR_IRB_ERR_A	0x100000000#define PI_ERR_IRB_TIMEOUT_B	0x200000000	/* IRB_B got a timeout      */#define PI_ERR_IRB_TIMEOUT_A	0x400000000#define PI_ERR_CLEAR_ALL_A	0x554aaaaaa#define PI_ERR_CLEAR_ALL_B	0x2aa555555/* * The following three macros define all possible error int pends.  */#define PI_FATAL_ERR_CPU_A	(PI_ERR_IRB_TIMEOUT_A	| \				 PI_ERR_IRB_ERR_A	| \				 PI_ERR_PKT_LEN_ERR_A	| \				 PI_ERR_SYSSTATE_TAG_A 	| \				 PI_ERR_BAD_SPOOL_A 	| \				 PI_ERR_SYSCMD_ADDR_A 	| \				 PI_ERR_SYSCMD_DATA_A 	| \				 PI_ERR_SYSAD_ADDR_A 	| \				 PI_ERR_SYSAD_DATA_A	| \				 PI_ERR_SYSSTATE_A)#define PI_MISC_ERR_CPU_A	(PI_ERR_UE_CACHED_A	| \				 PI_ERR_SYSAD_BAD_DATA_A| \				 PI_ERR_UNCAC_UNCORR_A 	| \				 PI_ERR_WRB_WERR_A 	| \				 PI_ERR_WRB_TERR_A 	| \				 PI_ERR_SPUR_MSG_A 	| \				 PI_ERR_SPOOL_CMP_A)#define PI_FATAL_ERR_CPU_B	(PI_ERR_IRB_TIMEOUT_B	| \				 PI_ERR_IRB_ERR_B	| \				 PI_ERR_PKT_LEN_ERR_B	| \				 PI_ERR_SYSSTATE_TAG_B 	| \				 PI_ERR_BAD_SPOOL_B 	| \				 PI_ERR_SYSCMD_ADDR_B 	| \				 PI_ERR_SYSCMD_DATA_B 	| \				 PI_ERR_SYSAD_ADDR_B 	| \				 PI_ERR_SYSAD_DATA_B	| \				 PI_ERR_SYSSTATE_B)#define PI_MISC_ERR_CPU_B	(PI_ERR_UE_CACHED_B	| \				 PI_ERR_SYSAD_BAD_DATA_B| \				 PI_ERR_UNCAC_UNCORR_B 	| \				 PI_ERR_WRB_WERR_B 	| \				 PI_ERR_WRB_TERR_B 	| \				 PI_ERR_SPUR_MSG_B 	| \				 PI_ERR_SPOOL_CMP_B)#define PI_ERR_GENERIC	(PI_ERR_MD_UNCORR)/* Values for PI_MAX_CRB_TIMEOUT and PI_CRB_SFACTOR */#define PMCT_MAX	0xff#define PCS_MAX		0xffffff/* pi_err_status0_a_u_t address shift */#define ERR_STAT0_ADDR_SHFT     3/* PI error read/write bit (RRB == 0, WRB == 1)	*//* pi_err_status1_a_u_t.pi_err_status1_a_fld_s.esa_wrb */#define PI_ERR_RRB	0#define PI_ERR_WRB	1/* Error stack address shift, for use with pi_stk_fmt.sk_addr */#define ERR_STK_ADDR_SHFT	3#endif /* _ASM_SN_SN1_HUBPI_NEXT_H */

⌨️ 快捷键说明

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