Rev 1383 | Rev 1389 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1383 | Rev 1384 | ||
---|---|---|---|
Line 179... | Line 179... | ||
179 | * @param istate Interrupted register context. |
179 | * @param istate Interrupted register context. |
180 | * |
180 | * |
181 | */ |
181 | */ |
182 | void pht_refill(bool data, istate_t *istate) |
182 | void pht_refill(bool data, istate_t *istate) |
183 | { |
183 | { |
184 | asid_t asid; |
- | |
185 | __address badvaddr; |
184 | __address badvaddr; |
186 | pte_t *pte; |
185 | pte_t *pte; |
187 | int pfcr; |
186 | int pfcr; |
188 | as_t *as; |
187 | as_t *as; |
189 | bool lock; |
188 | bool lock; |
Line 202... | Line 201... | ||
202 | : "=r" (badvaddr) |
201 | : "=r" (badvaddr) |
203 | ); |
202 | ); |
204 | } else |
203 | } else |
205 | badvaddr = istate->pc; |
204 | badvaddr = istate->pc; |
206 | 205 | ||
207 | spinlock_lock(&as->lock); |
- | |
208 | asid = as->asid; |
- | |
209 | spinlock_unlock(&as->lock); |
- | |
210 | - | ||
211 | page_table_lock(as, lock); |
206 | page_table_lock(as, lock); |
212 | 207 | ||
213 | pte = find_mapping_and_check(as, lock, badvaddr, istate, &pfcr); |
208 | pte = find_mapping_and_check(as, lock, badvaddr, istate, &pfcr); |
214 | if (!pte) { |
209 | if (!pte) { |
215 | switch (pfcr) { |
210 | switch (pfcr) { |