print("prtable_addr",prtable_addr)
# TODO check and loop if needed
- assert(prtable_addr==0x1000000)
- print("fetch data from PROCESS_TABLE_3")
+ #assert(prtable_addr==0x1000000)
+ #print("fetch data from PROCESS_TABLE_3")
+ data = self._next_level(prtable_addr, 8, False, False)
+ print("data",data)
+ #assert(data==0x40000000000300ad)
+ return "TODO verify"
+
+ # rts = shift = unsigned('0' & data(62 downto 61) & data(7 downto 5));
+ shift = selectconcat(SelectableInt(0,1), data[2:3], data[57:59])
+ print("shift",shift)
+ # mbits := unsigned('0' & data(4 downto 0));
+ mbits = selectconcat(SelectableInt(0,1), data[59:63])
+ print("mbits",mbits)
+
+ if mbits.value==0:
+ return "INVALID"
+ ret = self._segment_check(addr, mbits, shift)
+ print("ret",ret)
+ return ret
"""
+ NOTE _ THIS IS CACHEING OF PGTBL3 / PGTBL0. WE DO NOT NEED TO DO THIS
+
if r.addr(63) = '1' then
v.pgtbl3 := data;
v.pt3_valid := '1';