M 如果有至少一个的另外的寄存器,则为1. (need verify)
Impl 需要查特定的CPU 手册才能确定.
BE 1 是big endian 0是littel-endian (只读?)
AT 0 MIPS32; 1 MIPS64 instruction but MIPS32 address map; 2 full MIPS64
MT mmu type. 0--none; 1-- MIPS32/64 compliant TLB; 2 BAT(极老的U); 3--MIPS32 FMT fixed mapping;
VI 1 indicate the L1 cache is VIVT.
K0 kseg0 的cache配置, 含义和TLB entry的 EntryLo-1(C) 相同.
config1(M) 如果config2 存在则为1.
Config1(MMUsize) size of TLB( 共有MMUsize+1个TLB entry)
L1-cache/L1-Dcache S:64x2^S个 index (乘以associativity 就是cache lines) L:0是没有cache, 否则cache line大小是:
2X2^L个byte A: Associativity cache 是(A+1) Way的.
C2 1代表CP2存在
MD 1代表FPU 实现了MDMX
PC performance counter
WR 1代表至少有一个watchpoint register
CA 1 代表MIPS16e可用
EP 1代表 EJTAG 可用
FP 1代表FPU存在.
M 同上
TU 特定实现的关于L3的信息
TS,TL,TA L3cache的信息, 类似于上边的IS,IL,IA
SU 实现相关的关于L2 cache的信息
SS,SL,SA L2 cache的set, cache line size, Associativity
M 同上
LPA large physical address (迄今无人实现,看CPU手册吧)
DSPP DSP存在则为1
VEIC EIC-compatible interrupt 控制器存在则为1
VInt 如果可以处理Vectored interrupt则为1
SP 如果只是sub-4k page size则为1, 大部分都不支持.
MT MT 存在则为1(multi threading)
SM smartMIPS存在则为1. (安全加密相关, 一般针对smart card)
TL EJTAG 的instructin trace功能存在则为1
可以重新安排异常向量位置,可以让SMP每个CPU都用自己的中断服务向量.
1,0 高位固定,这限制了中断向量必须位于kseg0.
Exception Base: 4k为单位. 参考中断部分的描述.
CPUNum 本CPU编号(一般是硬件决定的)
IPTI,IPPCI 只读.描述timer和performance counter中断是如何连接的. 和nonvectored和simple-vectored(VI) 中断模式相关. 3bit的值指出那个中断输入信号和timer(performance counter overflow interrupt)共享.有效值是2-7(0,和1是软件中断没有中断信号线).参考Cause(IPx). IPT和IPPC信号是送到CPU外面的,一般系统嗯设计人员把信号反接回来,所以这些值是有系统设计而不是CPU决定的.
VS 可写, 指定vector spacing大小,VSx32, 有效值是1,2,4,8,16. 设置为0则所有中断到同样的地址.
和SRSmap共同来配置shadow寄存器, 类似ARM的那种机制.
HSS CPU/VPE提供的最高编号的寄存器集. (个数减1) 一般只读.
CSS 当前使用的寄存器集. 只读. 在eret的时候被PSS替代.
ESS 可写. 其他异常使用的寄存器集. (除了VI/EIC 模式)
PSS eret之后PSS覆盖CSS. 用rdpgpr wrpgpr访问. 可写.
EICSS EIC模式,外部可以建议使用一个寄存器集(非0 IPL,RFC), 这里是采用了的寄存器集.
Note: PSS和CSS 不是总是被异常所更新. 只有那些写了一个新的地址到EPC的(或等效,RFC). 不会更新EPC的包含:
---- SR(EXl)已经设置后发生的异常
---- cache error (异常地址在ErrorEPC)
----- EJtag debug 异常, 返回地址在DEC.
Load-Linked Address (LLAddr) Register
ll/sc 调试专用.