Module Name: src
Committed By: simonb
Date: Sun Jul 26 07:46:21 UTC 2020
Modified Files:
src/sys/arch/mips/cavium/dev: octeon_corereg.h
src/sys/arch/mips/include: cpuregs.h
Log Message:
Remove mostly duplicate MIPS spec CP0 regs from octeon_corereg.h, move
the Cavium specific CP0 regs to <mips/cpuregs.h> as done for other core
specific regs.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/mips/cavium/dev/octeon_corereg.h
cvs rdiff -u -r1.102 -r1.103 src/sys/arch/mips/include/cpuregs.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/mips/cavium/dev/octeon_corereg.h
diff -u src/sys/arch/mips/cavium/dev/octeon_corereg.h:1.3 src/sys/arch/mips/cavium/dev/octeon_corereg.h:1.4
--- src/sys/arch/mips/cavium/dev/octeon_corereg.h:1.3 Mon Jun 22 03:05:07 2020
+++ src/sys/arch/mips/cavium/dev/octeon_corereg.h Sun Jul 26 07:46:21 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: octeon_corereg.h,v 1.3 2020/06/22 03:05:07 simonb Exp $ */
+/* $NetBSD: octeon_corereg.h,v 1.4 2020/07/26 07:46:21 simonb Exp $ */
/*
* Copyright (c) 2007 Internet Initiative Japan, Inc.
@@ -29,345 +29,10 @@
#ifndef _OCTEON_COREREG_H_
#define _OCTEON_COREREG_H_
-/*
- * Core Coprocessor 0 Privileged Registers.
- */
-
-#ifdef _LOCORE
-#define CP0_INDEX $0 /* Index Register */
-#define CP0_RANDOM $1 /* Random Register */
-#define CP0_ENTRYLO0 $2 /* EntryLo0 Registers */
-#define CP0_ENTRYLO1 $3 /* EntryLo1 Registers */
-#define CP0_CONTEXT $4 /* Context Register */
-#define CP0_PAGEMASK $5 /* PageMask Register */
-#define CP0_PAGEGRAIN $5, 1 /* PageGrain Register */
-#define CP0_WIRED $6 /* Wired Register */
-#define CP0_HWRENA $7 /* HWREna Register */
-#define CP0_BADVADDR $8 /* BadVAddr Register */
-#define CP0_COUNT $9 /* Count Register */
-#define CP0_ENTRYHI $10 /* EntryHi Register */
-#define CP0_COMPARE $11 /* Compare Register */
-#define CP0_STATUS $12 /* Status Register */
-#define CP0_INTCTL $12, 1 /* IntCtl Register */
-#define CP0_SRSCTL $12, 2 /* SRSCtl Register */
-#define CP0_CAUSE $13 /* Cause Register */
-#define CP0_EPC $14 /* Exception Program Counter */
-#define CP0_PRID $15 /* PRId Register */
-#define CP0_EBASE $15, 1 /* EBase Register */
-#define CP0_CONFIG $16 /* Config Register */
-#define CP0_CONFIG1 $16, 1 /* Config1 Register */
-#define CP0_CONFIG2 $16, 2 /* Config2 Register */
-#define CP0_CONFIG3 $16, 3 /* Config3 Register */
-#define CP0_WATCHLO $18 /* WatchLo Register */
-#define CP0_WATCHLO1 $18, 1
-#define CP0_WATCHHI $19 /* WatchHi Register */
-#define CP0_WATCHHI1 $19, 1
-#define CP0_XCONTEXT $20 /* XContext Register */
-#define CP0_DEBUG $23 /* Debug Register */
-#define CP0_DPC $24 /* Debug Exception Program Counter Register */
-#define CP0_PCCTL $25 /* Performance Counter Control Register */
-#define CP0_PCCTL1 $25, 2
-#define CP0_PCCNT $25, 1 /* Performance Counter Counter Register */
-#define CP0_PCCNT1 $25, 3
-#define CP0_ERROREPC $30 /* ErrorEPC */
-#define CP0_DESAVE $31 /* DESAVE Register */
-#define CP0_CACHEERRI $27 /* CacheErr (Icache) */
-#define CP0_CACHEERRD $27, 1 /* CacheErr (Dcache) */
-#define CP0_TAGLOI $28 /* TagLo Register (Icache) */
-#define CP0_TAGLOD $28, 2 /* TagLo Register (Dcache) */
-#define CP0_DATALOI $28, 1 /* DataLo Register (Icache) */
-#define CP0_DATALOD $28, 3 /* DataLo Register (Dcache) */
-#define CP0_TAGHI $29, 2 /* TagHi Register */
-#define CP0_DATAHII $29, 1 /* DataHi Register (Icache) */
-#define CP0_DATAHID $29, 3 /* DataHi Register (Dcache) */
-#define CP0_CVMCTL $9, 7 /* CvmCtl Register */
-#define CP0_CVMMEMCTL $11, 7 /* CvmMemCtl Register */
-#define CP0_CVMCNT $9, 6 /* CvmCount Register */
-#define CP0_MCD $22 /* Multi-Core Debug Register */
-#endif
-
/* ---- register bits */
-/* Index Register */
-
-#define CP0_INDEX_P UINT32_C(0x80000000)
-#define CP0_INDEX_XXX_30_5 0x7fffffe0
-#define CP0_INDEX_INDEX 0x0000001f
-
-/* Random Register */
-
-#define CP0_RANDOM_XXX_31_5 0xffffffe0
-#define CP0_RANDOM_RANDOM 0x0000001f
-
-/* EntryLo0, EntryLo1 Registers */
-
-#define CP0_ENTRYLON_FILL UINT64_C(0xfffff80000000000)
-#define CP0_ENTRYLON_PFNX UINT64_C(0x000007ffc0000000)
-#define CP0_ENTRYLON_PFN UINT64_C(0x000000003fffffc0)
-#define CP0_ENTRYLON_C UINT64_C(0x0000000000000038)
-#define CP0_ENTRYLON_D UINT64_C(0x0000000000000004)
-#define CP0_ENTRYLON_V UINT64_C(0x0000000000000002)
-#define CP0_ENTRYLON_G UINT64_C(0x0000000000000001)
-
-/* Context Register */
-
-#define CP0_CONTEXT_PTEBASE UINT64_C(0xffffffffff800000)
-#define CP0_CONTEXT_BADVPN2 UINT64_C(0x00000000007ffff0)
-#define CP0_CONTEXT_XXX_3_0 UINT64_C(0x000000000000000f)
-
-/* PageMask Register */
-
-#define CP0_PAGEMASK_XXX_31_29 UINT64_C(0xe000000000000000)
-#define CP0_PAGEMASK_MASK UINT64_C(0x1fffffffffffe000)
-#define CP0_PAGEMASK_MASKX UINT64_C(0x0000000000001800)
-#define CP0_PAGEMASK_XXX_10_0 UINT64_C(0x0000000000000fff)
-
-/* PageGrain Register */
-
-#define CP0_PAGEGRAIN_ASE 0xc0000000
-#define CP0_PAGEGRAIN_ELPA UINT32_C(0x20000000)
-#define CP0_PAGEGRAIN_ESP UINT32_C(0x10000000)
-#define CP0_PAGEGRAIN_XXX_27_13 0x0fffe000
-#define CP0_PAGEGRAIN_XXX_7_0 0x000000ff
-
-/* Wired Register */
-
-#define CP0_WIRED_XXX_31_5 UINT64_C(0xffffffffffffffe0)
-#define CP0_WIRED_WIRED UINT64_C(0x000000000000001f)
-
-/* HWREna Register */
-
-#define CP0_HWRENA_MASKX 0xc0000000
-#define CP0_HWRENA_XXX_29_4 0x3ffffff0
-#define CP0_HWRENA_MASK 0x0000000f
-
-/* BadVAddr Register */
-
-/* Count Register */
-
-/* EntryHi Register */
-
-#define CP0_ENTRYHI_R UINT64_C(0xc000000000000000)
-#define CP0_ENTRYHI_FILL UINT64_C(0x3ffe000000000000)
-#define CP0_ENTRYHI_VPN2 UINT64_C(0x0001ffffffffe000)
-#define CP0_ENTRYHI_VPN2X UINT64_C(0x0000000000001800)
-#define CP0_ENTRYHI_XXX_10_8 UINT64_C(0x0000000000000700)
-#define CP0_ENTRYHI_ASID UINT64_C(0x00000000000000ff)
-
-/* Compare Register */
-
-/* Status Register */
-
-#define CP0_STATUS_CU3 UINT32_C(0x80000000)
-#define CP0_STATUS_CU2 UINT32_C(0x40000000)
-#define CP0_STATUS_CU1 UINT32_C(0x20000000)
-#define CP0_STATUS_CU0 UINT32_C(0x10000000)
-#define CP0_STATUS_RP UINT32_C(0x08000000)
-#define CP0_STATUS_FR UINT32_C(0x04000000)
-#define CP0_STATUS_RE UINT32_C(0x02000000)
-#define CP0_STATUS_MX UINT32_C(0x01000000)
-#define CP0_STATUS_PX UINT32_C(0x00800000)
-#define CP0_STATUS_BEV UINT32_C(0x00400000)
-#define CP0_STATUS_TS UINT32_C(0x00200000)
-#define CP0_STATUS_SR UINT32_C(0x00100000)
-#define CP0_STATUS_NMI UINT32_C(0x00080000)
-#define CP0_STATUS_XXX_18_16 0x00070000
-#define CP0_STATUS_IM_7_4 0x0000fc00
-#define CP0_STATUS_IM_1_0 0x00000300
-#define CP0_STATUS_KX UINT32_C(0x00000080)
-#define CP0_STATUS_SX UINT32_C(0x00000040)
-#define CP0_STATUS_UX UINT32_C(0x00000020)
-#define CP0_STATUS_KSU 0x00000018
-#define CP0_STATUS_ERL UINT32_C(0x00000004)
-#define CP0_STATUS_EXL UINT32_C(0x00000002)
-#define CP0_STATUS_IE UINT32_C(0x00000001)
-
-/* IntCtl Register */
-
-#define CP0_INTCTL_IPTI 0xe0000000
-#define CP0_INTCTL_IPPCI 0x1c000000
-#define CP0_INTCTL_XXX_25_10 0x03fffc00
-#define CP0_INTCTL_VS 0x000003e0
-#define CP0_INTCTL_XXX_4_0 0x0000001f
-
-/* SRSCtl Register */
-
-#define CP0_SRSCTL_XXX_31_30 0xc0000000
-#define CP0_SRSCTL_HSS 0x3c000000
-#define CP0_SRSCTL_XXX_25_22 0x03c00000
-#define CP0_SRSCTL_EICSS 0x003c0000
-#define CP0_SRSCTL_XXX_17_16 0x00030000
-#define CP0_SRSCTL_ESS 0x0000f000
-#define CP0_SRSCTL_XXX_11_10 0x00000c00
-#define CP0_SRSCTL_EXL 0x000003c0
-#define CP0_SRSCTL_XXX_5_4 0x00000030
-#define CP0_SRSCTL_CSS 0x0000000f
-
-/* Cause Register */
-
-#define CP0_CAUSE_BD UINT32_C(0x80000000)
-#define CP0_CAUSE_TI UINT32_C(0x40000000)
-#define CP0_CAUSE_CE 0x30000000
-#define CP0_CAUSE_DC UINT32_C(0x08000000)
-#define CP0_CAUSE_PCI UINT32_C(0x04000000)
-#define CP0_CAUSE_XXX_25_24 0x03000000
-#define CP0_CAUSE_IV UINT32_C(0x00800000)
-#define CP0_CAUSE_WP UINT32_C(0x00400000)
-#define CP0_CAUSE_XXX_21_16 0x003f0000
-#define CP0_CAUSE_IP_7_4 0x0000f000
-#define CP0_CAUSE_IP_3_2 0x00000c00
-#define CP0_CAUSE_IP_1_0 0x00000300
-#define CP0_CAUSE_XXX_7 UINT32_C(0x00000080)
-#define CP0_CAUSE_EXCCODE 0x0000007c
-#define CP0_CAUSE_XXX_1_0 0x00000003
-
-/* Exception Program Counter */
-
-/* PRId Register */
-
-#define CP0_PRID_COMPANY_OPTIONS 0xff000000
-#define CP0_PRID_COMPANY_ID 0x00ff0000
-#define CP0_PRID_PROCESSOR_ID 0x0000ff00
-#define CP0_PRID_REVISION 0x000000ff
-
-/* EBase Register */
-
-#define CP0_EBASE_ALWAYS UINT32_C(0x80000000)
-#define CP0_EBASE_XXX_30 UINT32_C(0x40000000)
-#define CP0_EBASE_EXCEPTION_BASE 0x3ffff000
-#define CP0_EBASE_XXX_11_10 0x00000c00
-#define CP0_EBASE_CPU_NUM 0x000003ff
-
-/* Config Register */
-
-#define CP0_CONFIG_M UINT32_C(0x80000000)
-#define CP0_CONFIG_IMPL 0x7fff0000
-#define CP0_CONFIG_BE UINT32_C(0x00008000)
-#define CP0_CONFIG_AT 0x00006000
-#define CP0_CONFIG_AR 0x00001c00
-#define CP0_CONFIG_MT 0x00000380
-#define CP0_CONFIG_XXX_6_4 0x00000070
-#define CP0_CONFIG_VI UINT32_C(0x00000008)
-#define CP0_CONFIG_KO 0x00000007
-
-/* Config1 Register */
-
-#define CP0_CONFIG1_M UINT32_C(0x10000000)
-#define CP0_CONFIG1_MMUSIZE_1 0x7e000000
-#define CP0_CONFIG1_IS 0x01c00000
-#define CP0_CONFIG1_IL 0x00380000
-#define CP0_CONFIG1_IA 0x00070000
-#define CP0_CONFIG1_DS 0x0000e000
-#define CP0_CONFIG1_DL 0x00001c00
-#define CP0_CONFIG1_DA 0x00000380
-#define CP0_CONFIG1_C2 UINT32_C(0x00000040)
-#define CP0_CONFIG1_MD UINT32_C(0x00000020)
-#define CP0_CONFIG1_PC UINT32_C(0x00000010)
-#define CP0_CONFIG1_WR UINT32_C(0x00000008)
-#define CP0_CONFIG1_CA UINT32_C(0x00000004)
-#define CP0_CONFIG1_EP UINT32_C(0x00000002)
-#define CP0_CONFIG1_FP UINT32_C(0x00000001)
-
-/* Config2 Register */
-
-#define CP0_CONFIG2_M UINT32_C(0x80000000)
-#define CP0_CONFIG2_TU 0x70000000
-#define CP0_CONFIG2_TS 0x0f000000
-#define CP0_CONFIG2_TL 0x00f00000
-#define CP0_CONFIG2_TA 0x000f0000
-#define CP0_CONFIG2_SU 0x0000f000
-#define CP0_CONFIG2_SS 0x00000f00
-#define CP0_CONFIG2_SL 0x000000f0
-#define CP0_CONFIG2_SA 0x0000000f
-
-/* Config3 Register */
-
-#define CP0_CONFIG3_M UINT32_C(0x80000000)
-#define CP0_CONFIG3_XXX_30_8 0x7fffff00
-#define CP0_CONFIG3_LPA UINT32_C(0x00000080)
-#define CP0_CONFIG3_VEIC UINT32_C(0x00000040)
-#define CP0_CONFIG3_VINT UINT32_C(0x00000020)
-#define CP0_CONFIG3_SP UINT32_C(0x00000010)
-#define CP0_CONFIG3_XXX_3_2 0x0000000c
-#define CP0_CONFIG3_SM UINT32_C(0x00000002)
-#define CP0_CONFIG3_TL UINT32_C(0x00000001)
-
-/* WatchLo Register */
-
-#define CP0_WATCHLO_VADDR UINT64_C(0xfffffffffffffff8)
-#define CP0_WATCHLO_I UINT64_C(0x0000000000000004)
-#define CP0_WATCHLO_R UINT64_C(0x0000000000000002)
-#define CP0_WATCHLO_W UINT64_C(0x0000000000000001)
-
-/* WatchHi Register */
-
-#define CP0_WATCHHI_M UINT32_C(0x80000000)
-#define CP0_WATCHHI_G UINT32_C(0x40000000)
-#define CP0_WATCHHI_XXX_29_24 0x3f000000
-#define CP0_WATCHHI_ASID 0x00ff0000
-#define CP0_WATCHHI_XXX_15_12 0x0000f000
-#define CP0_WATCHHI_MASK 0x00000ff8
-#define CP0_WATCHHI_I UINT32_C(0x00000004)
-#define CP0_WATCHHI_R UINT32_C(0x00000002)
-#define CP0_WATCHHI_W UINT32_C(0x00000001)
-
-/* XContext Register */
-
-#define CP0_XCONTEXT_PTEBASE UINT64_C(0xfffffc0000000000)
-#define CP0_XCONTEXT_R UINT64_C(0x0000030000000000)
-#define CP0_XCONTEXT_BADVPN2 UINT64_C(0x000000fffffffff0)
-#define CP0_XCONTEXT_XXX_3_0 UINT64_C(0x000000000000000f)
-
-/* Debug Register */
-
-#define CP0_DEBUG_DBD UINT32_C(0x80000000)
-#define CP0_DEBUG_DM UINT32_C(0x40000000)
-#define CP0_DEBUG_NODCR UINT32_C(0x20000000)
-#define CP0_DEBUG_LSNM UINT32_C(0x10000000)
-#define CP0_DEBUG_DOZE UINT32_C(0x08000000)
-#define CP0_DEBUG_HALT UINT32_C(0x04000000)
-#define CP0_DEBUG_COUNTDM UINT32_C(0x02000000)
-#define CP0_DEBUG_IBUSEP UINT32_C(0x01000000)
-#define CP0_DEBUG_MCHECKP UINT32_C(0x00800000)
-#define CP0_DEBUG_CACHEEP UINT32_C(0x00400000)
-#define CP0_DEBUG_DBUSEP UINT32_C(0x00200000)
-#define CP0_DEBUG_IEXI UINT32_C(0x00100000)
-#define CP0_DEBUG_DDBSIMPR UINT32_C(0x00080000)
-#define CP0_DEBUG_DDBLIMPR UINT32_C(0x00040000)
-#define CP0_DEBUG_EJTAG 0x00038000
-#define CP0_DEBUG_DEXCCODE 0x00007c00
-#define CP0_DEBUG_NOSST UINT32_C(0x00000200)
-#define CP0_DEBUG_SST UINT32_C(0x00000100)
-#define CP0_DEBUG_XXX_7_6 0x000000c0
-#define CP0_DEBUG_DINT UINT32_C(0x00000020)
-#define CP0_DEBUG_DIB UINT32_C(0x00000010)
-#define CP0_DEBUG_DDBS UINT32_C(0x00000008)
-#define CP0_DEBUG_DDBL UINT32_C(0x00000004)
-#define CP0_DEBUG_DBP UINT32_C(0x00000002)
-#define CP0_DEBUG_DSS UINT32_C(0x00000001)
-
-/* Debug Exception Program Counter Register */
-
-/* Performance Counter Control Register */
-
-#define CP0_PCCTL_M UINT32_C(0x80000000)
-#define CP0_PCCTL_W UINT32_C(0x40000000)
-#define CP0_PCCTL_XXX_29_11 0x3ffff800
-#define CP0_PCCTL_EVENT 0x000007e0
-#define CP0_PCCTL_IE UINT32_C(0x00000010)
-#define CP0_PCCTL_U UINT32_C(0x00000008)
-#define CP0_PCCTL_S UINT32_C(0x00000004)
-#define CP0_PCCTL_K UINT32_C(0x00000002)
-#define CP0_PCCTL_EXL UINT32_C(0x00000001)
-
-/* Performance Counter Counter Register */
-
-/* ErrorEPC */
-
-/* DESAVE Register */
-
/*
- * Cavium Networks-Specific Coprocessor 0 Register
+ * Cavium Networks-Specific Coprocessor 0 Registers
*/
/* CacheErr (Icache) */
@@ -421,27 +86,6 @@
#define CP0_TAGLOD_G UINT64_C(0x0000000000000002)
#define CP0_TAGLOD_VALID UINT64_C(0x0000000000000001)
-/* DataLo Register (Icache) */
-
-/* DataLo Register (Dcache) */
-
-/* TagHi Register */
-
-#define CP0_TAGHI_XXX_63_36 UINT64_C(0xfffffff000000000)
-#define CP0_TAGHI_PTAG UINT64_C(0x0000000fffffff80)
-#define CP0_TAGHI_XXX_6_1 UINT64_C(0x000000000000007e)
-#define CP0_TAGHI_VALID UINT64_C(0x0000000000000001)
-
-/* DataHi Register (Icache) */
-
-#define CP0_DATAHII_XXX_63_8 UINT64_C(0xffffffffffffff00)
-#define CP0_DATAHII_PAR UINT64_C(0x00000000000000ff)
-
-/* DataHi Register (Dcache) */
-
-#define CP0_DATAHID_XXX_63_8 UINT64_C(0xffffffffffffff00)
-#define CP0_DATAHID_PAR UINT64_C(0x00000000000000ff)
-
/* CvmCtl Register */
#define CP0_CVMCTL_XXX_63_32 UINT64_C(0xffffffff00000000)
@@ -529,22 +173,8 @@
#define CP0_MCD_MCD1 UINT64_C(0x0000000000000002)
#define CP0_MCD_MCD0 UINT64_C(0x0000000000000001)
-/*
- * Core EJTAG DRSEG Registers
- */
-
-/* XXX */
-
-/*
- * Core EJTAG TAP Registers
- */
-
-/* XXX */
-
/* ---- operations */
-/* XXX */
-
/*
* OCTEON Configuration and Status Registers (CSRs)
*/
Index: src/sys/arch/mips/include/cpuregs.h
diff -u src/sys/arch/mips/include/cpuregs.h:1.102 src/sys/arch/mips/include/cpuregs.h:1.103
--- src/sys/arch/mips/include/cpuregs.h:1.102 Mon Jul 20 03:17:44 2020
+++ src/sys/arch/mips/include/cpuregs.h Sun Jul 26 07:46:21 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: cpuregs.h,v 1.102 2020/07/20 03:17:44 simonb Exp $ */
+/* $NetBSD: cpuregs.h,v 1.103 2020/07/26 07:46:21 simonb Exp $ */
/*
* Copyright (c) 2009 Miodrag Vallat.
@@ -498,13 +498,22 @@
* 4 MIPS_COP_0_TLB_CONTEXT 3636 TLB Context.
* 4/2 MIPS_COP_0_USERLOCAL ..36 UserLocal.
* 5 MIPS_COP_0_TLB_PG_MASK .333 TLB Page Mask register.
- * 5/1 MIPS_COP_0_PG_GRAIN ..33 PageGrain register
+ * 5/1 MIPS_COP_0_PG_GRAIN ..33 PageGrain register.
+ * 5/5 MIPS_COP_0_PWBASE ..33 Page Walker Base register.
+ * 5/6 MIPS_COP_0_PWFIELD ..33 Page Walker Field register.
+ * 5/7 MIPS_COP_0_PWSIZE ..33 Page Walker Size register.
* 6 MIPS_COP_0_TLB_WIRED .333 Wired TLB number.
+ * 6/6 MIPS_COP_0_PWCTL ..33 Page Walker Control register.
+ * 6/6 MIPS_COP_0_EIRR ...6 [RMI] Extended Interrupt Request Register.
+ * 6/7 MIPS_COP_0_EIMR ...6 [RMI] Extended Interrupt Mask Register.
* 7 MIPS_COP_0_HWRENA ..33 rdHWR Enable.
* 8 MIPS_COP_0_BAD_VADDR 3636 Bad virtual address.
* 9 MIPS_COP_0_COUNT .333 Count register.
+ * 9/6 MIPS_COP_0_CVMCNT ...6 [CAVIUM] CvmCtl register.
+ * 9/7 MIPS_COP_0_CVMCTL ...6 [CAVIUM] CvmCount register (64 bit).
* 10 MIPS_COP_0_TLB_HI 3636 TLB entry high.
* 11 MIPS_COP_0_COMPARE .333 Compare (against Count).
+ * 11/7 MIPS_COP_0_CVMMEMCTL ...6 [CAVIUM] CvmMemCtl register.
* 12 MIPS_COP_0_STATUS 3333 Status register.
* 12/1 MIPS_COP_0_INTCTL ..33 Interrupt Control.
* 12/2 MIPS_COP_0_SRSCTL ..33 Shadow Register Set Selectors.
@@ -523,23 +532,32 @@
* 16/7 MIPS_COP_0_CONFIG7 ..33 Configuration register 7.
* 17 MIPS_COP_0_LLADDR .336 Load Linked Address.
* 18 MIPS_COP_0_WATCH_LO .336 WatchLo register.
+ * 18/1 MIPS_COP_0_WATCH_LO2 ..ii WatchLo 1 register.
* 19 MIPS_COP_0_WATCH_HI .333 WatchHi register.
+ * 19/1 MIPS_COP_0_WATCH_HI1 ..ii WatchHi 1 register.
* 20 MIPS_COP_0_TLB_XCONTEXT .6.6 TLB XContext register.
* 22 MIPS_COP_0_OSSCRATCH ...6 [RMI] OS Scratch register. (select 0..7)
* 22 MIPS_COP_0_DIAG ...6 [LOONGSON2] Diagnostic register.
+ * 22 MIPS_COP_0_MCD ...6 [CAVIUM] Multi-Core Debug register.
* 23 MIPS_COP_0_DEBUG .... Debug JTAG register.
* 24 MIPS_COP_0_DEPC .... DEPC JTAG register.
- * 25 MIPS_COP_0_PERFCNT ..36 Performance Counter register.
+ * 25/0 MIPS_COP_0_PERFCNT0_CTL ..ii Performance Counter 0 control register.
+ * 25/1 MIPS_COP_0_PERFCNT0_CNT ..ii Performance Counter 0 value register.
+ * 25/2 MIPS_COP_0_PERFCNT1_CTL ..ii Performance Counter 1 control register.
+ * 25/3 MIPS_COP_0_PERFCNT1_CNT ..ii Performance Counter 1 value register.
* 26 MIPS_COP_0_ECC .3ii ECC / Error Control register.
* 27 MIPS_COP_0_CACHE_ERR .3ii Cache Error register.
+ * 27 MIPS_COP_0_CACHE_ERR_I ...6 [CAVIUM] Cache Error register (instr).
+ * 27/1 MIPS_COP_0_CACHE_ERR_D ...6 [CAVIUM] Cache Error register (data).
+ * 27/1 MIPS_COP_0_CACHE_ERR .3ii Cache Error register.
* 28/0 MIPS_COP_0_TAG_LO .3ii Cache TagLo register (instr).
* 28/1 MIPS_COP_0_DATA_LO ..ii Cache DataLo register (instr).
* 28/2 MIPS_COP_0_TAG_LO ..ii Cache TagLo register (data).
* 28/3 MIPS_COP_0_DATA_LO ..ii Cache DataLo register (data).
* 29/0 MIPS_COP_0_TAG_HI .3ii Cache TagHi register (instr).
* 29/1 MIPS_COP_0_DATA_HI ..ii Cache DataHi register (instr).
- * 29/2 MIPS_COP_0_TAG_HI ..ii Cache TagHi register (data).
- * 29/3 MIPS_COP_0_DATA_HI ..ii Cache DataHi register (data).
+ * 29/2 MIPS_COP_0_TAG_HI_DATA ..ii Cache TagHi register (data).
+ * 29/3 MIPS_COP_0_DATA_HI_DATA ..ii Cache DataHi register (data).
* 30 MIPS_COP_0_ERROR_PC .636 Error EPC register.
* 31 MIPS_COP_0_DESAVE .... DESAVE JTAG register.
*/
@@ -561,7 +579,6 @@
#define MIPS_COP_0_EXC_PC _(14)
#define MIPS_COP_0_PRID _(15)
-
/* MIPS-I */
#define MIPS_COP_0_TLB_LOW _(2)
@@ -578,12 +595,17 @@
#define MIPS_COP_0_CONFIG _(16)
#define MIPS_COP_0_LLADDR _(17)
#define MIPS_COP_0_WATCH_LO _(18)
+#define MIPS_COP_0_WATCH_LO1 _(18), 1 /* MIPS32/64 optional */
#define MIPS_COP_0_WATCH_HI _(19)
+#define MIPS_COP_0_WATCH_HI1 _(19), 1 /* MIPS32/64 optional */
#define MIPS_COP_0_TLB_XCONTEXT _(20)
#define MIPS_COP_0_ECC _(26)
#define MIPS_COP_0_CACHE_ERR _(27)
+#define MIPS_COP_0_CACHE_ERR_I _(27) /* CAVIUM */
+#define MIPS_COP_0_CACHE_ERR_D _(27), 1 /* CAVIUM */
#define MIPS_COP_0_TAG_LO _(28)
#define MIPS_COP_0_TAG_HI _(29)
+#define MIPS_COP_0_TAG_HI_DATA _(29), 2
#define MIPS_COP_0_ERROR_PC _(30)
/* MIPS32/64 */
@@ -599,9 +621,14 @@
#define MIPS_COP_0_PWFIELD _(5), 6
#define MIPS_COP_0_PWSIZE _(5), 7
#define MIPS_COP_0_PWCTL _(6), 6
+#define MIPS_COP_0_EIRR _(6), 6 /* RMI */
+#define MIPS_COP_0_EIMR _(6), 7 /* RMI */
#define MIPS_COP_0_HWRENA _(7)
#define MIPS_COP_0_BADINSTR _(8), 1
#define MIPS_COP_0_BADINSTRP _(8), 2
+#define MIPS_COP_0_CVMCNT _(9), 6 /* CAVIUM */
+#define MIPS_COP_0_CVMCTL _(9), 7 /* CAVIUM */
+#define MIPS_COP_0_CVMMEMCTL _(11), 7 /* CAVIUM */
#define MIPS_COP_0_INTCTL _(12), 1
#define MIPS_COP_0_SRSCTL _(12), 2
#define MIPS_COP_0_SRSMAP _(12), 3
@@ -616,12 +643,17 @@
#define MIPS_COP_0_CONFIG4 _(16), 4
#define MIPS_COP_0_CONFIG5 _(16), 5
#define MIPS_COP_0_OSSCRATCH _(22) /* RMI */
-#define MIPS_COP_0_DIAG _(22)
+#define MIPS_COP_0_DIAG _(22) /* LOONGSON2 */
+#define MIPS_COP_0_MCD _(22) /* CAVIUM */
#define MIPS_COP_0_DEBUG _(23)
#define MIPS_COP_0_DEPC _(24)
-#define MIPS_COP_0_PERFCNT _(25)
-#define MIPS_COP_0_DATA_LO _(28)
-#define MIPS_COP_0_DATA_HI _(29)
+#define MIPS_COP_0_PERFCNT0_CTL _(25)
+#define MIPS_COP_0_PERFCNT0_CNT _(25), 1
+#define MIPS_COP_0_PERFCNT1_CTL _(25), 2
+#define MIPS_COP_0_PERFCNT1_CNT _(25), 3
+#define MIPS_COP_0_DATA_LO _(28), 1
+#define MIPS_COP_0_DATA_HI _(29), 3
+#define MIPS_COP_0_DATA_HI_DATA _(29)
#define MIPS_COP_0_DESAVE _(31)
#define MIPS_DIAG_RAS_DISABLE 0x00000001 /* Loongson2 */