|
@@ -247,3 +247,119 @@ struct el_t2_data_memory {
|
|
|
unsigned long elcm_filter; /* CSR9: CRD Filter Control. */
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+/*
|
|
|
+ * Sable other CPU error frame - sable pfms section 3.43
|
|
|
+ */
|
|
|
+struct el_t2_data_other_cpu {
|
|
|
+ short elco_cpuid; /* CPU ID */
|
|
|
+ short elco_res02[3];
|
|
|
+ unsigned long elco_bcc; /* CSR 0 */
|
|
|
+ unsigned long elco_bcce; /* CSR 1 */
|
|
|
+ unsigned long elco_bccea; /* CSR 2 */
|
|
|
+ unsigned long elco_bcue; /* CSR 3 */
|
|
|
+ unsigned long elco_bcuea; /* CSR 4 */
|
|
|
+ unsigned long elco_dter; /* CSR 5 */
|
|
|
+ unsigned long elco_cbctl; /* CSR 6 */
|
|
|
+ unsigned long elco_cbe; /* CSR 7 */
|
|
|
+ unsigned long elco_cbeal; /* CSR 8 */
|
|
|
+ unsigned long elco_cbeah; /* CSR 9 */
|
|
|
+ unsigned long elco_pmbx; /* CSR 10 */
|
|
|
+ unsigned long elco_ipir; /* CSR 11 */
|
|
|
+ unsigned long elco_sic; /* CSR 12 */
|
|
|
+ unsigned long elco_adlk; /* CSR 13 */
|
|
|
+ unsigned long elco_madrl; /* CSR 14 */
|
|
|
+ unsigned long elco_crrev4; /* CSR 15 */
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Sable other CPU error frame - sable pfms section 3.44
|
|
|
+ */
|
|
|
+struct el_t2_data_t2{
|
|
|
+ struct el_t2_frame_header elct_hdr; /* ID$T2-FRAME */
|
|
|
+ unsigned long elct_iocsr; /* IO Control and Status Register */
|
|
|
+ unsigned long elct_cerr1; /* Cbus Error Register 1 */
|
|
|
+ unsigned long elct_cerr2; /* Cbus Error Register 2 */
|
|
|
+ unsigned long elct_cerr3; /* Cbus Error Register 3 */
|
|
|
+ unsigned long elct_perr1; /* PCI Error Register 1 */
|
|
|
+ unsigned long elct_perr2; /* PCI Error Register 2 */
|
|
|
+ unsigned long elct_hae0_1; /* High Address Extension Register 1 */
|
|
|
+ unsigned long elct_hae0_2; /* High Address Extension Register 2 */
|
|
|
+ unsigned long elct_hbase; /* High Base Register */
|
|
|
+ unsigned long elct_wbase1; /* Window Base Register 1 */
|
|
|
+ unsigned long elct_wmask1; /* Window Mask Register 1 */
|
|
|
+ unsigned long elct_tbase1; /* Translated Base Register 1 */
|
|
|
+ unsigned long elct_wbase2; /* Window Base Register 2 */
|
|
|
+ unsigned long elct_wmask2; /* Window Mask Register 2 */
|
|
|
+ unsigned long elct_tbase2; /* Translated Base Register 2 */
|
|
|
+ unsigned long elct_tdr0; /* TLB Data Register 0 */
|
|
|
+ unsigned long elct_tdr1; /* TLB Data Register 1 */
|
|
|
+ unsigned long elct_tdr2; /* TLB Data Register 2 */
|
|
|
+ unsigned long elct_tdr3; /* TLB Data Register 3 */
|
|
|
+ unsigned long elct_tdr4; /* TLB Data Register 4 */
|
|
|
+ unsigned long elct_tdr5; /* TLB Data Register 5 */
|
|
|
+ unsigned long elct_tdr6; /* TLB Data Register 6 */
|
|
|
+ unsigned long elct_tdr7; /* TLB Data Register 7 */
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Sable error log data structure - sable pfms section 3.40
|
|
|
+ */
|
|
|
+struct el_t2_data_corrected {
|
|
|
+ unsigned long elcpb_biu_stat;
|
|
|
+ unsigned long elcpb_biu_addr;
|
|
|
+ unsigned long elcpb_biu_ctl;
|
|
|
+ unsigned long elcpb_fill_syndrome;
|
|
|
+ unsigned long elcpb_fill_addr;
|
|
|
+ unsigned long elcpb_bc_tag;
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * Sable error log data structure
|
|
|
+ * Note there are 4 memory slots on sable (see t2.h)
|
|
|
+ */
|
|
|
+struct el_t2_frame_mcheck {
|
|
|
+ struct el_t2_frame_header elfmc_header; /* ID$P-FRAME_MCHECK */
|
|
|
+ struct el_t2_logout_header elfmc_hdr;
|
|
|
+ struct el_t2_procdata_mcheck elfmc_procdata;
|
|
|
+ struct el_t2_sysdata_mcheck elfmc_sysdata;
|
|
|
+ struct el_t2_data_t2 elfmc_t2data;
|
|
|
+ struct el_t2_data_memory elfmc_memdata[4];
|
|
|
+ struct el_t2_frame_header elfmc_footer; /* empty */
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * Sable error log data structures on memory errors
|
|
|
+ */
|
|
|
+struct el_t2_frame_corrected {
|
|
|
+ struct el_t2_frame_header elfcc_header; /* ID$P-BC-COR */
|
|
|
+ struct el_t2_logout_header elfcc_hdr;
|
|
|
+ struct el_t2_data_corrected elfcc_procdata;
|
|
|
+/* struct el_t2_data_t2 elfcc_t2data; */
|
|
|
+/* struct el_t2_data_memory elfcc_memdata[4]; */
|
|
|
+ struct el_t2_frame_header elfcc_footer; /* empty */
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+#ifdef __KERNEL__
|
|
|
+
|
|
|
+#ifndef __EXTERN_INLINE
|
|
|
+#define __EXTERN_INLINE extern inline
|
|
|
+#define __IO_EXTERN_INLINE
|
|
|
+#endif
|
|
|
+
|
|
|
+/*
|
|
|
+ * I/O functions:
|
|
|
+ *
|
|
|
+ * T2 (the core logic PCI/memory support chipset for the SABLE
|
|
|
+ * series of processors uses a sparse address mapping scheme to
|
|
|
+ * get at PCI memory and I/O.
|
|
|
+ */
|
|
|
+
|
|
|
+#define vip volatile int *
|
|
|
+#define vuip volatile unsigned int *
|
|
|
+
|
|
|
+extern inline u8 t2_inb(unsigned long addr)
|
|
|
+{
|
|
|
+ long result = *(vip) ((addr << 5) + T2_IO + 0x00);
|