📄 archdefs.h
字号:
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |P| 0 | Index | Index
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Index $0
#define R_C0_Index 0
#define C0_INX C0_Index /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_IndexP 31 /* Probe failure (R)*/
#define M_IndexP (0x1 << S_IndexP)
#define S_IndexIndex 0 /* TLB index (R/W)*/
#define M_IndexIndex (0x3f << S_IndexIndex)
#define M_Index0Fields 0x7fffffc0
#define M_IndexRFields 0x80000000
/*
************************************************************************
* R A N D O M R E G I S T E R ( 1 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | 0 | Index | Random
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Random $1
#define R_C0_Random 1
#define C0_RAND $1 /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_RandomIndex 0 /* TLB random index (R)*/
#define M_RandomIndex (0x3f << S_RandomIndex)
#define M_Random0Fields 0xffffffc0
#define M_RandomRFields 0x0000003f
/*
************************************************************************
* E N T R Y L O 0 R E G I S T E R ( 2 ) *
************************************************************************
*
* 6 6 6 6 5 // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 3 2 1 0 9 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Fill (0) //| 0 | PFN | C |D|V|G| EntryLo0
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_EntryLo0 $2
#define R_C0_EntryLo0 2
#define C0_TLBLO_0 C0_EntryLo0 /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_EntryLoPFN 6 /* PFN (R/W) */
#define M_EntryLoPFN (0xffffff << S_EntryLoPFN)
#define S_EntryLoC 3 /* Coherency attribute (R/W) */
#define M_EntryLoC (0x7 << S_EntryLoC)
#define S_EntryLoD 2 /* Dirty (R/W) */
#define M_EntryLoD (0x1 << S_EntryLoD)
#define S_EntryLoV 1 /* Valid (R/W) */
#define M_EntryLoV (0x1 << S_EntryLoV)
#define S_EntryLoG 0 /* Global (R/W) */
#define M_EntryLoG (0x1 << S_EntryLoG)
#define M_EntryLoOddPFN (0x1 << S_EntryLoPFN) /* Odd PFN bit */
#define S_EntryLo_RS K_PageAlign /* Right-justify PFN */
#define S_EntryLo_LS S_EntryLoPFN /* Position PFN to appropriate position */
#define M_EntryLo0Fields 0x00000000
#define M_EntryLoRFields 0xc0000000
#define M_EntryLo0Fields64 UNS64Const(0x0000000000000000)
#define M_EntryLoRFields64 UNS64Const(0xffffffffc0000000)
/*
* Cache attribute values in the C field of EntryLo and the
* K0 field of Config
*/
#define K_CacheAttrCWTnWA 0 /* Cacheable, write-thru, no write allocate */
#define K_CacheAttrCWTWA 1 /* Cacheable, write-thru, write allocate */
#define K_CacheAttrU 2 /* Uncached */
#define K_CacheAttrC 3 /* Cacheable */
#define K_CacheAttrCN 3 /* Cacheable, non-coherent */
#define K_CacheAttrCCE 4 /* Cacheable, coherent, exclusive */
#define K_CacheAttrCCS 5 /* Cacheable, coherent, shared */
#define K_CacheAttrCCU 6 /* Cacheable, coherent, update */
#define K_CacheAttrUA 7 /* Uncached accelerated */
/*
************************************************************************
* E N T R Y L O 1 R E G I S T E R ( 3 ) *
************************************************************************
*
* 6 6 6 6 5 // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 3 2 1 0 9 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Fill (0) //| 0 | PFN | C |D|V|G| EntryLo1
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_EntryLo1 $3
#define R_C0_EntryLo1 3
#define C0_TLBLO_1 C0_EntryLo1 /* OBSOLETE - DO NOT USE IN NEW CODE */
/*
* Field definitions are as given for EntryLo0 above
*/
/*
************************************************************************
* C O N T E X T R E G I S T E R ( 4 ) *
************************************************************************
*
* 6 // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 3 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | // PTEBase | BadVPN<31:13> | 0 | Context
* +-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Context $4
#define R_C0_Context 4
#define C0_CTXT C0_Context /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_ContextPTEBase 23 /* PTE base (R/W) */
#define M_ContextPTEBase (0x1ff << S_ContextPTEBase)
#define S_ContextBadVPN 4 /* BadVPN2 (R) */
#define M_ContextBadVPN (0x7ffff << S_ContextBadVPN)
#define S_ContextBadVPN_LS 9 /* Position BadVPN to bit 31 */
#define S_ContextBadVPN_RS 13 /* Right-justify shifted BadVPN field */
#define M_Context0Fields 0x0000000f
#define M_ContextRFields 0x007ffff0
#define M_Context0Fields64 UNS64Const(0x000000000000000f)
#define M_ContextRFields64 UNS64Const(0x00000000007ffff0)
/*
************************************************************************
* P A G E M A S K R E G I S T E R ( 5 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | 0 | Mask | 0 | PageMask
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_PageMask $5
#define R_C0_PageMask 5 /* Mask (R/W) */
#define C0_PGMASK C0_PageMask /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_PageMaskMask 13
#define M_PageMaskMask (0xfff << S_PageMaskMask)
#define M_PageMask0Fields 0xfe001fff
#define M_PageMaskRFields 0x00000000
/*
* Values in the Mask field
*/
#define K_PageMask4K 0x000 /* K_PageMasknn values are values for use */
#define K_PageMask16K 0x003 /* with KReqPageAttributes or KReqPageMask macros */
#define K_PageMask64K 0x00f
#define K_PageMask256K 0x03f
#define K_PageMask1M 0x0ff
#define K_PageMask4M 0x3ff
#define K_PageMask16M 0xfff
#define M_PageMask4K (K_PageMask4K << S_PageMaskMask) /* M_PageMasknn values are masks */
#define M_PageMask16K (K_PageMask16K << S_PageMaskMask) /* in position in the PageMask register */
#define M_PageMask64K (K_PageMask64K << S_PageMaskMask)
#define M_PageMask256K (K_PageMask256K << S_PageMaskMask)
#define M_PageMask1M (K_PageMask1M << S_PageMaskMask)
#define M_PageMask4M (K_PageMask4M << S_PageMaskMask)
#define M_PageMask16M (K_PageMask16M << S_PageMaskMask)
/*
************************************************************************
* W I R E D R E G I S T E R ( 6 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | 0 | Index | Wired
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Wired $6
#define R_C0_Wired 6
#define C0_TLBWIRED C0_Wired /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_WiredIndex 0 /* TLB wired boundary (R/W) */
#define M_WiredIndex (0x3f << S_WiredIndex)
#define M_Wired0Fields 0xffffffc0
#define M_WiredRFields 0x00000000
/*
************************************************************************
* B A D V A D D R R E G I S T E R ( 8 ) *
************************************************************************
*
* 6 // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 3 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | // Bad Virtual Address | BadVAddr
* +-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_BadVAddr $8
#define R_C0_BadVAddr 8
#define C0_BADVADDR C0_BadVAddr /* OBSOLETE - DO NOT USE IN NEW CODE */
#define M_BadVAddrOddPage K_PageSize /* Even/Odd VA bit for pair of PAs */
#define M_BadVAddr0Fields 0x00000000
#define M_BadVAddrRFields 0xffffffff
#define M_BadVAddr0Fields64 UNS64Const(0x0000000000000000)
#define M_BadVAddrRFields64 UNS64Const(0xffffffffffffffff)
/*
************************************************************************
* C O U N T R E G I S T E R ( 9 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Count Value | Count
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Count $9
#define R_C0_Count 9
#define C0_COUNT C0_Count /* OBSOLETE - DO NOT USE IN NEW CODE */
#define M_Count0Fields 0x00000000
#define M_CountRFields 0x00000000
/*
************************************************************************
* E N T R Y H I R E G I S T E R ( 1 0 ) *
************************************************************************
*
* 6 6 6 6 5 // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 3 2 1 0 9 // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | R | Fill // VPN2 | 0 | ASID | EntryHi
* +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_EntryHi $10
#define R_C0_EntryHi 10
#define C0_TLBHI C0_EntryHi /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_EntryHiR64 62 /* Region (R/W) */
#define M_EntryHiR64 UNS64Const(0xc000000000000000)
#define S_EntryHiVPN2 13 /* VPN/2 (R/W) */
#define M_EntryHiVPN2 (0x7ffff << S_EntryHiVPN2)
#define M_EntryHiVPN264 UNS64Const(0x000000ffffffe000)
#define S_EntryHiASID 0 /* ASID (R/W) */
#define M_EntryHiASID (0xff << S_EntryHiASID)
#define S_EntryHiVPN_Shf S_EntryHiVPN2
#define M_EntryHi0Fields 0x00001f00
#define M_EntryHiRFields 0x00000000
#define M_EntryHi0Fields64 UNS64Const(0x0000000000001f00)
#define M_EntryHiRFields64 UNS64Const(0x3fffff0000000000)
/*
************************************************************************
* C O M P A R E R E G I S T E R ( 1 1 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* | Compare Value | Compare
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Compare $11
#define R_C0_Compare 11
#define C0_COMPARE C0_Compare /* OBSOLETE - DO NOT USE IN NEW CODE */
#define M_Compare0Fields 0x00000000
#define M_CompareRFields 0x00000000
/*
************************************************************************
* S T A T U S R E G I S T E R ( 1 2 ) *
************************************************************************
*
* 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
* 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |C|C|C|C|R|F|R|M|P|B|T|S|M| | R |I|I|I|I|I|I|I|I|K|S|U|U|R|E|E|I|
* |U|U|U|U|P|R|E|X|X|E|S|R|M| | s |M|M|M|M|M|M|M|M|X|X|X|M|s|R|X|E| Status
* |3|2|1|0| | | | | |V| | |I| | v |7|6|5|4|3|2|1|0| | | | |v|L|L| |
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#define C0_Status $12
#define R_C0_Status 12
#define C0_SR C0_Status /* OBSOLETE - DO NOT USE IN NEW CODE */
#define S_StatusCU 28 /* Coprocessor enable (R/W) */
#define M_StatusCU (0xf << S_StatusCU)
#define S_StatusCU3 31
#define M_StatusCU3 (0x1 << S_StatusCU3)
#define S_StatusCU2 30
#define M_StatusCU2 (0x1 << S_StatusCU2)
#define S_StatusCU1 29
#define M_StatusCU1 (0x1 << S_StatusCU1)
#define S_StatusCU0 28
#define M_StatusCU0 (0x1 << S_StatusCU0)
#define S_StatusRP 27 /* Enable reduced power mode (R/W) */
#define M_StatusRP (0x1 << S_StatusRP)
#define S_StatusFR 26 /* Enable 64-bit FPRs (MIPS64 only) (R/W) */
#define M_StatusFR (0x1 << S_StatusFR)
#define S_StatusRE 25 /* Enable reverse endian (R/W) */
#define M_StatusRE (0x1 << S_StatusRE)
#define S_StatusMX 24 /* Enable access to MDMX resources (MIPS64 only) (R/W) */
#define M_StatusMX (0x1 << S_StatusMX)
#define S_StatusPX 23 /* Enable access to 64-bit instructions/data (MIPS64 only) (R/W) */
#define M_StatusPX (0x1 << S_StatusPX)
#define S_StatusBEV 22 /* Enable Boot Exception Vectors (R/W) */
#define M_StatusBEV (0x1 << S_StatusBEV)
#define S_StatusTS 21 /* Denote TLB shutdown (R/W) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -