|
|
|
@ -155,7 +155,12 @@ fn page_fault(tf: &mut TrapFrame) {
|
|
|
|
|
};
|
|
|
|
|
let tlb_result = root_table.lookup(addr);
|
|
|
|
|
match tlb_result {
|
|
|
|
|
Ok(tlb_entry) => tlb::write_tlb_random(tlb_entry),
|
|
|
|
|
Ok(tlb_entry) => {
|
|
|
|
|
trace!("PhysAddr = {:x}/{:x}",
|
|
|
|
|
tlb_entry.entry_lo0.get_pfn() << 12,
|
|
|
|
|
tlb_entry.entry_lo1.get_pfn() << 12);
|
|
|
|
|
tlb::write_tlb_random(tlb_entry)
|
|
|
|
|
},
|
|
|
|
|
Err(()) => {
|
|
|
|
|
if !crate::memory::handle_page_fault(addr) {
|
|
|
|
|
crate::trap::error(tf);
|
|
|
|
|