Subversion Repositories HelenOS

Rev

Rev 3788 | Rev 3827 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3788 Rev 3790
Line 98... Line 98...
98
        case AS_PF_FAULT:
98
        case AS_PF_FAULT:
99
            page_table_lock(as, lock);
99
            page_table_lock(as, lock);
100
            *pfrc = rc;
100
            *pfrc = rc;
101
            return NULL;
101
            return NULL;
102
        default:
102
        default:
103
            panic("unexpected rc (%d)\n", rc);
103
            panic("Unexpected rc (%d).", rc);
104
        }  
104
        }  
105
    }
105
    }
106
}
106
}
107
 
107
 
108
 
108
 
Line 117... Line 117...
117
    s = get_symtab_entry(istate->lr);
117
    s = get_symtab_entry(istate->lr);
118
    if (s)
118
    if (s)
119
        sym2 = s;
119
        sym2 = s;
120
 
120
 
121
    fault_if_from_uspace(istate,
121
    fault_if_from_uspace(istate,
122
        "%p: PHT Refill Exception at %p (%s<-%s)", badvaddr,
122
        "%p: PHT Refill Exception at %p (%s<-%s).", badvaddr,
123
        istate->pc, symbol, sym2);
123
        istate->pc, symbol, sym2);
124
    panic("%p: PHT Refill Exception at %p (%s<-%s)\n", badvaddr,
124
    panic("%p: PHT Refill Exception at %p (%s<-%s).", badvaddr,
125
        istate->pc, symbol, sym2);
125
        istate->pc, symbol, sym2);
126
}
126
}
127
 
127
 
128
 
128
 
129
static void pht_insert(const uintptr_t vaddr, const pfn_t pfn)
129
static void pht_insert(const uintptr_t vaddr, const pfn_t pfn)
Line 312... Line 312...
312
             * or copy_to_uspace().
312
             * or copy_to_uspace().
313
             */
313
             */
314
            page_table_unlock(as, lock);
314
            page_table_unlock(as, lock);
315
            return;
315
            return;
316
        default:
316
        default:
317
            panic("Unexpected pfrc (%d)\n", pfrc);
317
            panic("Unexpected pfrc (%d).", pfrc);
318
        }
318
        }
319
    }
319
    }
320
   
320
   
321
    pte->a = 1; /* Record access to PTE */
321
    pte->a = 1; /* Record access to PTE */
322
    pht_insert(badvaddr, pte->pfn);
322
    pht_insert(badvaddr, pte->pfn);