|
@@ -985,3 +985,125 @@ do { \
|
|
|
|
|
|
#define read_c0_diag2() __read_32bit_c0_register($22, 2)
|
|
|
#define write_c0_diag2(val) __write_32bit_c0_register($22, 2, val)
|
|
|
+
|
|
|
+#define read_c0_diag3() __read_32bit_c0_register($22, 3)
|
|
|
+#define write_c0_diag3(val) __write_32bit_c0_register($22, 3, val)
|
|
|
+
|
|
|
+#define read_c0_diag4() __read_32bit_c0_register($22, 4)
|
|
|
+#define write_c0_diag4(val) __write_32bit_c0_register($22, 4, val)
|
|
|
+
|
|
|
+#define read_c0_diag5() __read_32bit_c0_register($22, 5)
|
|
|
+#define write_c0_diag5(val) __write_32bit_c0_register($22, 5, val)
|
|
|
+
|
|
|
+#define read_c0_debug() __read_32bit_c0_register($23, 0)
|
|
|
+#define write_c0_debug(val) __write_32bit_c0_register($23, 0, val)
|
|
|
+
|
|
|
+#define read_c0_depc() __read_ulong_c0_register($24, 0)
|
|
|
+#define write_c0_depc(val) __write_ulong_c0_register($24, 0, val)
|
|
|
+
|
|
|
+/*
|
|
|
+ * MIPS32 / MIPS64 performance counters
|
|
|
+ */
|
|
|
+#define read_c0_perfctrl0() __read_32bit_c0_register($25, 0)
|
|
|
+#define write_c0_perfctrl0(val) __write_32bit_c0_register($25, 0, val)
|
|
|
+#define read_c0_perfcntr0() __read_32bit_c0_register($25, 1)
|
|
|
+#define write_c0_perfcntr0(val) __write_32bit_c0_register($25, 1, val)
|
|
|
+#define read_c0_perfcntr0_64() __read_64bit_c0_register($25, 1)
|
|
|
+#define write_c0_perfcntr0_64(val) __write_64bit_c0_register($25, 1, val)
|
|
|
+#define read_c0_perfctrl1() __read_32bit_c0_register($25, 2)
|
|
|
+#define write_c0_perfctrl1(val) __write_32bit_c0_register($25, 2, val)
|
|
|
+#define read_c0_perfcntr1() __read_32bit_c0_register($25, 3)
|
|
|
+#define write_c0_perfcntr1(val) __write_32bit_c0_register($25, 3, val)
|
|
|
+#define read_c0_perfcntr1_64() __read_64bit_c0_register($25, 3)
|
|
|
+#define write_c0_perfcntr1_64(val) __write_64bit_c0_register($25, 3, val)
|
|
|
+#define read_c0_perfctrl2() __read_32bit_c0_register($25, 4)
|
|
|
+#define write_c0_perfctrl2(val) __write_32bit_c0_register($25, 4, val)
|
|
|
+#define read_c0_perfcntr2() __read_32bit_c0_register($25, 5)
|
|
|
+#define write_c0_perfcntr2(val) __write_32bit_c0_register($25, 5, val)
|
|
|
+#define read_c0_perfcntr2_64() __read_64bit_c0_register($25, 5)
|
|
|
+#define write_c0_perfcntr2_64(val) __write_64bit_c0_register($25, 5, val)
|
|
|
+#define read_c0_perfctrl3() __read_32bit_c0_register($25, 6)
|
|
|
+#define write_c0_perfctrl3(val) __write_32bit_c0_register($25, 6, val)
|
|
|
+#define read_c0_perfcntr3() __read_32bit_c0_register($25, 7)
|
|
|
+#define write_c0_perfcntr3(val) __write_32bit_c0_register($25, 7, val)
|
|
|
+#define read_c0_perfcntr3_64() __read_64bit_c0_register($25, 7)
|
|
|
+#define write_c0_perfcntr3_64(val) __write_64bit_c0_register($25, 7, val)
|
|
|
+
|
|
|
+#define read_c0_ecc() __read_32bit_c0_register($26, 0)
|
|
|
+#define write_c0_ecc(val) __write_32bit_c0_register($26, 0, val)
|
|
|
+
|
|
|
+#define read_c0_derraddr0() __read_ulong_c0_register($26, 1)
|
|
|
+#define write_c0_derraddr0(val) __write_ulong_c0_register($26, 1, val)
|
|
|
+
|
|
|
+#define read_c0_cacheerr() __read_32bit_c0_register($27, 0)
|
|
|
+
|
|
|
+#define read_c0_derraddr1() __read_ulong_c0_register($27, 1)
|
|
|
+#define write_c0_derraddr1(val) __write_ulong_c0_register($27, 1, val)
|
|
|
+
|
|
|
+#define read_c0_taglo() __read_32bit_c0_register($28, 0)
|
|
|
+#define write_c0_taglo(val) __write_32bit_c0_register($28, 0, val)
|
|
|
+
|
|
|
+#define read_c0_dtaglo() __read_32bit_c0_register($28, 2)
|
|
|
+#define write_c0_dtaglo(val) __write_32bit_c0_register($28, 2, val)
|
|
|
+
|
|
|
+#define read_c0_ddatalo() __read_32bit_c0_register($28, 3)
|
|
|
+#define write_c0_ddatalo(val) __write_32bit_c0_register($28, 3, val)
|
|
|
+
|
|
|
+#define read_c0_staglo() __read_32bit_c0_register($28, 4)
|
|
|
+#define write_c0_staglo(val) __write_32bit_c0_register($28, 4, val)
|
|
|
+
|
|
|
+#define read_c0_taghi() __read_32bit_c0_register($29, 0)
|
|
|
+#define write_c0_taghi(val) __write_32bit_c0_register($29, 0, val)
|
|
|
+
|
|
|
+#define read_c0_errorepc() __read_ulong_c0_register($30, 0)
|
|
|
+#define write_c0_errorepc(val) __write_ulong_c0_register($30, 0, val)
|
|
|
+
|
|
|
+/* MIPSR2 */
|
|
|
+#define read_c0_hwrena() __read_32bit_c0_register($7, 0)
|
|
|
+#define write_c0_hwrena(val) __write_32bit_c0_register($7, 0, val)
|
|
|
+
|
|
|
+#define read_c0_intctl() __read_32bit_c0_register($12, 1)
|
|
|
+#define write_c0_intctl(val) __write_32bit_c0_register($12, 1, val)
|
|
|
+
|
|
|
+#define read_c0_srsctl() __read_32bit_c0_register($12, 2)
|
|
|
+#define write_c0_srsctl(val) __write_32bit_c0_register($12, 2, val)
|
|
|
+
|
|
|
+#define read_c0_srsmap() __read_32bit_c0_register($12, 3)
|
|
|
+#define write_c0_srsmap(val) __write_32bit_c0_register($12, 3, val)
|
|
|
+
|
|
|
+#define read_c0_ebase() __read_32bit_c0_register($15, 1)
|
|
|
+#define write_c0_ebase(val) __write_32bit_c0_register($15, 1, val)
|
|
|
+
|
|
|
+
|
|
|
+/* Cavium OCTEON (cnMIPS) */
|
|
|
+#define read_c0_cvmcount() __read_ulong_c0_register($9, 6)
|
|
|
+#define write_c0_cvmcount(val) __write_ulong_c0_register($9, 6, val)
|
|
|
+
|
|
|
+#define read_c0_cvmctl() __read_64bit_c0_register($9, 7)
|
|
|
+#define write_c0_cvmctl(val) __write_64bit_c0_register($9, 7, val)
|
|
|
+
|
|
|
+#define read_c0_cvmmemctl() __read_64bit_c0_register($11, 7)
|
|
|
+#define write_c0_cvmmemctl(val) __write_64bit_c0_register($11, 7, val)
|
|
|
+/*
|
|
|
+ * The cacheerr registers are not standardized. On OCTEON, they are
|
|
|
+ * 64 bits wide.
|
|
|
+ */
|
|
|
+#define read_octeon_c0_icacheerr() __read_64bit_c0_register($27, 0)
|
|
|
+#define write_octeon_c0_icacheerr(val) __write_64bit_c0_register($27, 0, val)
|
|
|
+
|
|
|
+#define read_octeon_c0_dcacheerr() __read_64bit_c0_register($27, 1)
|
|
|
+#define write_octeon_c0_dcacheerr(val) __write_64bit_c0_register($27, 1, val)
|
|
|
+
|
|
|
+/* BMIPS3300 */
|
|
|
+#define read_c0_brcm_config_0() __read_32bit_c0_register($22, 0)
|
|
|
+#define write_c0_brcm_config_0(val) __write_32bit_c0_register($22, 0, val)
|
|
|
+
|
|
|
+#define read_c0_brcm_bus_pll() __read_32bit_c0_register($22, 4)
|
|
|
+#define write_c0_brcm_bus_pll(val) __write_32bit_c0_register($22, 4, val)
|
|
|
+
|
|
|
+#define read_c0_brcm_reset() __read_32bit_c0_register($22, 5)
|
|
|
+#define write_c0_brcm_reset(val) __write_32bit_c0_register($22, 5, val)
|
|
|
+
|
|
|
+/* BMIPS43xx */
|
|
|
+#define read_c0_brcm_cmt_intr() __read_32bit_c0_register($22, 1)
|
|
|
+#define write_c0_brcm_cmt_intr(val) __write_32bit_c0_register($22, 1, val)
|