67,7 → 67,7 |
* |
*/ |
static pte_t *find_mapping_and_check(as_t *as, bool lock, __address badvaddr, int access, |
istate_t *istate, int *pfcr) |
istate_t *istate, int *pfrc) |
{ |
/* |
* Check if the mapping exists in page tables. |
99,12 → 99,12 |
return pte; |
case AS_PF_DEFER: |
page_table_lock(as, lock); |
*pfcr = rc; |
*pfrc = rc; |
return NULL; |
case AS_PF_FAULT: |
page_table_lock(as, lock); |
printf("Page fault.\n"); |
*pfcr = rc; |
*pfrc = rc; |
return NULL; |
default: |
panic("unexpected rc (%d)\n", rc); |
190,7 → 190,7 |
|
/** Process Instruction/Data Storage Interrupt |
* |
* @param data True if Data Storage Interrupt. |
* @param n Interrupt vector number. |
* @param istate Interrupted register context. |
* |
*/ |
198,7 → 198,7 |
{ |
__address badvaddr; |
pte_t *pte; |
int pfcr; |
int pfrc; |
as_t *as; |
bool lock; |
|
220,9 → 220,9 |
|
page_table_lock(as, lock); |
|
pte = find_mapping_and_check(as, lock, badvaddr, PF_ACCESS_READ /* FIXME */, istate, &pfcr); |
pte = find_mapping_and_check(as, lock, badvaddr, PF_ACCESS_READ /* FIXME */, istate, &pfrc); |
if (!pte) { |
switch (pfcr) { |
switch (pfrc) { |
case AS_PF_FAULT: |
goto fail; |
break; |
234,7 → 234,7 |
page_table_unlock(as, lock); |
return; |
default: |
panic("Unexpected pfrc (%d)\n", pfcr); |
panic("Unexpected pfrc (%d)\n", pfrc); |
} |
} |
|