TLB相关指令
1、TEQ (R):if rs == rt then trap
2、TEQI(I):if rs == sex_imm then trap
3、TGE ® : if rs >= rt then trap
4、TGEI (I):if rs >= sex_imm then trap
5、TGEIU (I):if rs >= sex_imm.asUInt then trap
6、TGEU ® : if rs >= rt then trap ,as UInt to compare
7、TLBP (感觉像J 的子类型?暂时叫它subJ)
8、TLBR (subJ) :如果index寄存器的索引值大于TLB Entry,行为是UNDEFINED,没有异常处理。。。
9、TLBWI(subJ): is the same as TLBR ,just write .
10、TLBWR(subJ):用CP0的Random寄存器的INDEX来写TLB Entry
11、TLT
12、TLTI
13、TLTIU
14、TLTU
15、TNE
16、TNEI
错误分析
1、
index.P := Mux(match_hit === Y,0.U,1.U ) // match occurred:0 No match occurred: 1
CP0 的Index 寄存器 P位当TLB Entry match occurred为0,反之为1。而且P位权限为R
2、chisel的:=赋值延迟到下一个周期
比如status.EXL 在非ERET中断应该置1,但是受:=影响导致了TLB_REFILL中断处理地址的错误判断