📄 archdefs.h
字号:
#define PrefWBInval 25#define PrefNudge 25/* ************************************************************************* * C P U R E G I S T E R D E F I N I T I O N S * ************************************************************************* *//* ************************************************************************* * S O F T W A R E G P R N A M E S * ************************************************************************* */#if defined(__ASSEMBLER__)#define zero $0#define AT $1#define v0 $2#define v1 $3#define a0 $4#define a1 $5#define a2 $6#define a3 $7#define t0 $8#define t1 $9#define t2 $10#define t3 $11#define t4 $12#define t5 $13#define t6 $14#define t7 $15#define s0 $16#define s1 $17#define s2 $18#define s3 $19#define s4 $20#define s5 $21#define s6 $22#define s7 $23#define t8 $24#define t9 $25#define k0 $26#define k1 $27#define gp $28#define sp $29#define fp $30#define ra $31#endif/* * The following registers are used by the AVP environment and * are not part of the normal software definitions. */#ifdef MIPSAVPENV#define repc $25 /* Expected exception PC */#define tid $30 /* Current test case address */#endif/* ************************************************************************* * H A R D W A R E G P R N A M E S * ************************************************************************* * * In the AVP environment, several of the `r' names are removed from the * name space because they are used by the kernel for special purposes. * Removing them causes assembly rather than runtime errors for tests that * use the `r' names. * * - r25 (repc) is used as the expected PC on an exception * - r26-r27 (k0, k1) are used in the exception handler * - r30 (tid) is used as the current test address */#if defined(__ASSEMBLER__)#define r0 $0#define r1 $1#define r2 $2#define r3 $3#define r4 $4#define r5 $5#define r6 $6#define r7 $7#define r8 $8#define r9 $9#define r10 $10#define r11 $11#define r12 $12#define r13 $13#define r14 $14#define r15 $15#define r16 $16#define r17 $17#define r18 $18#define r19 $19#define r20 $20#define r21 $21#define r22 $22#define r23 $23#define r24 $24#ifdef MIPSAVPENV#define r25 r25_unknown#define r26 r26_unknown#define r27 r27_unknown#else#define r25 $25#define r26 $26#define r27 $27#endif#define r28 $28#define r29 $29#ifdef MIPSAVPENV#define r30 r30_unknown#else#define r30 $30#endif#define r31 $31#endif /* defined(__ASSEMBLER__) *//* ************************************************************************* * H A R D W A R E G P R I N D I C E S * ************************************************************************* * * These definitions provide the index (number) of the GPR, as opposed * to the assembler register name ($n). */#define R_r0 0#define R_r1 1#define R_r2 2#define R_r3 3#define R_r4 4#define R_r5 5#define R_r6 6#define R_r7 7#define R_r8 8#define R_r9 9#define R_r10 10#define R_r11 11#define R_r12 12#define R_r13 13#define R_r14 14#define R_r15 15#define R_r16 16#define R_r17 17#define R_r18 18#define R_r19 19#define R_r20 20#define R_r21 21#define R_r22 22#define R_r23 23#define R_r24 24#define R_r25 25#define R_r26 26#define R_r27 27#define R_r28 28#define R_r29 29#define R_r30 30#define R_r31 31#define R_hi 32 /* Hi register */#define R_lo 33 /* Lo register *//* ************************************************************************* * S O F T W A R E G P R I N D I C E S * ************************************************************************* * * These definitions provide the index (number) of the GPR, as opposed * to the assembler register name ($n). */#define R_zero 0#define R_AT 1#define R_v0 2#define R_v1 3#define R_a0 4#define R_a1 5#define R_a2 6#define R_a3 7#define R_t0 8#define R_t1 9#define R_t2 10#define R_t3 11#define R_t4 12#define R_t5 13#define R_t6 14#define R_t7 15#define R_s0 16#define R_s1 17#define R_s2 18#define R_s3 19#define R_s4 20#define R_s5 21#define R_s6 22#define R_s7 23#define R_t8 24#define R_t9 25#define R_k0 26#define R_k1 27#define R_gp 28#define R_sp 29#define R_fp 30#define R_s8 30#define R_ra 31/* ************************************************************************* * S O F T W A R E G P R M A S K S * ************************************************************************* * * These definitions provide the bit mask corresponding to the GPR number */#define M_AT (1<<1)#define M_v0 (1<<2)#define M_v1 (1<<3)#define M_a0 (1<<4)#define M_a1 (1<<5)#define M_a2 (1<<6)#define M_a3 (1<<7)#define M_t0 (1<<8)#define M_t1 (1<<9)#define M_t2 (1<<10)#define M_t3 (1<<11)#define M_t4 (1<<12)#define M_t5 (1<<13)#define M_t6 (1<<14)#define M_t7 (1<<15)#define M_s0 (1<<16)#define M_s1 (1<<17)#define M_s2 (1<<18)#define M_s3 (1<<19)#define M_s4 (1<<20)#define M_s5 (1<<21)#define M_s6 (1<<22)#define M_s7 (1<<23)#define M_t8 (1<<24)#define M_t9 (1<<25)#define M_k0 (1<<26)#define M_k1 (1<<27)#define M_gp (1<<28)#define M_sp (1<<29)#define M_fp (1<<30)#define M_ra (1<<31)/* ************************************************************************* * C P 0 R E G I S T E R D E F I N I T I O N S * ************************************************************************* * Each register has the following definitions: * * C0_rrr The register number (as a $n value) * R_C0_rrr The register index (as an integer corresponding * to the register number) * R_C0_Selrrr The register select (as an integer corresponding * to the register select) * * Each field in a register has the following definitions: * * S_rrrfff The shift count required to right-justify * the field. This corresponds to the bit * number of the right-most bit in the field. * M_rrrfff The Mask required to isolate the field. * * Register diagrams included below as comments correspond to the * MIPS32 and MIPS64 architecture specifications. Refer to other * sources for register diagrams for older architectures. *//* ************************************************************************ * I N D E X R E G I S T E R ( 0 ) * ************************************************************************ * * 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 R_C0_SelIndex 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 R_C0_SelRandom 0#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) //|R|X| PFN | C |D|V|G| EntryLo0 * | //|I|I| | | | | | * +-+-+-+-+-+//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */#define C0_EntryLo0 $2#define R_C0_EntryLo0 2#define R_C0_SelEntryLo0 0#define C0_TLBLO_0 C0_EntryLo0 /* OBSOLETE - DO NOT USE IN NEW CODE */#if defined(MIPS_SmartMIPS_ASE)/* * SmartMIPS MMU has RI and XI bits for further access qualification. * Non-SmartMIPS MMUs have bits 31 and 30 as reserved/zero bits. */#define S_EntryLoRI 31 /* Read Inhibit (R/W) */#define M_EntryLoRI (0x1 << S_EntryLoRI)#define S_EntryLoXI 30 /* Execute Inhibit (R/W) */#define M_EntryLoXI (0x1 << S_EntryLoXI)#endif /* MIPS_SmartMIPS_ASE */#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 /* ? *//* Shift to put PFN in its position within a physical address */#ifndef MIPS_SmartMIPS_ASE#define S_EntryLo_LS (12 - S_EntryLoPFN)#else#define S_EntryLo_LS ((12 - S_EntryLoPFN) - (12 - C0_PageGrainMSOne))#endif /* MIPS_SmartMIPS_ASE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -