Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/booke/pmap_32.c
Show First 20 Lines • Show All 592 Lines • ▼ Show 20 Lines | pte_find(mmu_t mmu, pmap_t pmap, vm_offset_t va) | ||||
KASSERT((pmap != NULL), ("pte_find: invalid pmap")); | KASSERT((pmap != NULL), ("pte_find: invalid pmap")); | ||||
if (pmap->pm_pdir[pdir_idx]) | if (pmap->pm_pdir[pdir_idx]) | ||||
return (&(pmap->pm_pdir[pdir_idx][ptbl_idx])); | return (&(pmap->pm_pdir[pdir_idx][ptbl_idx])); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
/* Get a pointer to a PTE in a page table, or the next closest (greater) one. */ | |||||
static __inline pte_t * | |||||
pte_find_next(mmu_t mmu, pmap_t pmap, vm_offset_t *pva) | |||||
{ | |||||
vm_offset_t va; | |||||
pte_t **pdir; | |||||
pte_t *pte; | |||||
unsigned long i, j; | |||||
KASSERT((pmap != NULL), ("pte_find: invalid pmap")); | |||||
va = *pva; | |||||
i = PDIR_IDX(va); | |||||
i = PTBL_IDX(va); | |||||
pdir = pmap->pm_pdir; | |||||
for (; i < PDIR_NENTRIES; i++, j = 0) { | |||||
if (pdir[i] == NULL) | |||||
continue; | |||||
for (; k < PTBL_NENTRIES; k++) { | |||||
pte = &pdir[i][j]; | |||||
if (!PTE_ISVALID(pte)) | |||||
continue; | |||||
*pva = PDIR_SIZE * i + PAGE_SIZE * j; | |||||
return (pte); | |||||
} | |||||
} | |||||
return (NULL); | |||||
} | |||||
/* Set up kernel page tables. */ | /* Set up kernel page tables. */ | ||||
static void | static void | ||||
kernel_pte_alloc(vm_offset_t data_end, vm_offset_t addr) | kernel_pte_alloc(vm_offset_t data_end, vm_offset_t addr) | ||||
{ | { | ||||
pte_t *pte; | pte_t *pte; | ||||
vm_offset_t va; | vm_offset_t va; | ||||
vm_offset_t pdir_start; | vm_offset_t pdir_start; | ||||
int i; | int i; | ||||
▲ Show 20 Lines • Show All 361 Lines • Show Last 20 Lines |