Changeset a820bf7 in mainline
- Timestamp:
- 2010-05-31T19:02:12Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e3ce39b
- Parents:
- ada559c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ppc32/src/mm/tlb.c
rada559c ra820bf7 51 51 * 52 52 * Try to find PTE for faulting address. 53 * The as->lock must be held on entry to this function 54 * if lock is true. 53 * The as->lock must be held on entry to this function. 55 54 * 56 55 * @param as Address space. … … 65 64 * 66 65 */ 67 static pte_t *find_mapping_and_check(as_t *as, bool lock, uintptr_t badvaddr,68 i nt access, istate_t *istate, int *pfrc)66 static pte_t *find_mapping_and_check(as_t *as, uintptr_t badvaddr, int access, 67 istate_t *istate, int *pfrc) 69 68 { 70 69 /* … … 83 82 * Resort to higher-level page fault handler. 84 83 */ 85 page_table_unlock(as, lock);84 page_table_unlock(as, true); 86 85 87 86 int rc = as_page_fault(badvaddr, access, istate); … … 92 91 * The mapping ought to be in place. 93 92 */ 94 page_table_lock(as, lock);93 page_table_lock(as, true); 95 94 pte = page_mapping_find(as, badvaddr); 96 95 ASSERT((pte) && (pte->present)); … … 98 97 return pte; 99 98 case AS_PF_DEFER: 100 page_table_lock(as, lock);99 page_table_lock(as, true); 101 100 *pfrc = rc; 102 101 return NULL; 103 102 case AS_PF_FAULT: 104 page_table_lock(as, lock);103 page_table_lock(as, true); 105 104 *pfrc = rc; 106 105 return NULL; … … 213 212 void pht_refill(int n, istate_t *istate) 214 213 { 215 as_t *as; 216 bool lock; 217 218 if (AS == NULL) { 219 as = AS_KERNEL; 220 lock = false; 221 } else { 222 as = AS; 223 lock = true; 224 } 225 214 as_t *as = (AS == NULL) ? AS_KERNEL : AS; 226 215 uintptr_t badvaddr; 227 216 … … 231 220 badvaddr = istate->pc; 232 221 233 page_table_lock(as, lock);222 page_table_lock(as, true); 234 223 235 224 int pfrc; 236 pte_t *pte = find_mapping_and_check(as, lock,badvaddr,225 pte_t *pte = find_mapping_and_check(as, badvaddr, 237 226 PF_ACCESS_READ /* FIXME */, istate, &pfrc); 238 227 … … 247 236 * or copy_to_uspace(). 248 237 */ 249 page_table_unlock(as, lock);238 page_table_unlock(as, true); 250 239 return; 251 240 default: … … 258 247 pht_insert(badvaddr, pte); 259 248 260 page_table_unlock(as, lock);249 page_table_unlock(as, true); 261 250 return; 262 251 263 252 fail: 264 page_table_unlock(as, lock);253 page_table_unlock(as, true); 265 254 pht_refill_fail(badvaddr, istate); 266 255 }
Note:
See TracChangeset
for help on using the changeset viewer.