FreeBSD/sys/powerpc/aim/mmu_oea64.c
/*
 * Maps a sequence of resident pages belonging to the same object.
 * The sequence begins with the given page m_start.  This page is
 * mapped at the given virtual address start.  Each subsequent page is
 * mapped at a virtual address that is offset from start by the same
 * amount as the page is offset from m_start within the object.  The
 * last page in the sequence is the page with the largest offset from
 * m_start that can be mapped at a virtual address less than the given
 * virtual address end.  Not every virtual page between start and end
 * is mapped; only those for which a resident page exists with the
 * corresponding offset from m_start are mapped.
 */
Maps a sequence of resident pages belonging to the same object.
The sequence begins with the given page m_start.  This page is
mapped at the given virtual address start.  Each subsequent page is
mapped at a virtual address that is offset from start by the same
amount as the page is offset from m_start within the object.  The
last page in the sequence is the page with the largest offset from
m_start that can be mapped at a virtual address less than the given
virtual address end.  Not every virtual page between start and end
is mapped; only those for which a resident page exists with the
corresponding offset from m_start are mapped.
Maps a sequence of resident pages belonging to the same object . The sequence begins with the given page m_start . This page is mapped at the given virtual address start . Each subsequent page is mapped at a virtual address that is offset from start by the same amount as the page is offset from m_start within the object . The last page in the sequence is the page with the largest offset from m_start that can be mapped at a virtual address less than the given virtual address end . Not every virtual page between start and end is mapped ; only those for which a resident page exists with the corresponding offset from m_start are mapped .
void
moea64_enter_object(mmu_t mmu, pmap_t pm, vm_offset_t start, vm_offset_t end,
    vm_page_t m_start, vm_prot_t prot)
{
	vm_page_t m;
	vm_pindex_t diff, psize;
	VM_OBJECT_ASSERT_LOCKED(m_start->object);
	psize = atop(end - start);
	m = m_start;
	while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) {
		moea64_enter(mmu, pm, start + ptoa(diff), m, prot &
		    (VM_PROT_READ | VM_PROT_EXECUTE), PMAP_ENTER_NOSLEEP, 0);
		m = TAILQ_NEXT(m, listq);
	}
}
void moea64_enter_object ( mmu_t mmu , pmap_t pm , vm_offset_t start , vm_offset_t end , vm_page_t m_start , vm_prot_t prot ) { vm_page_t m ; vm_pindex_t diff , psize ; VM_OBJECT_ASSERT_LOCKED ( m_start -> object ) ; psize = atop ( end - start ) ; m = m_start ; while ( m != NULL && ( diff = m -> pindex - m_start -> pindex ) < psize ) { moea64_enter ( mmu , pm , start + ptoa ( diff ) , m , prot & ( VM_PROT_READ | VM_PROT_EXECUTE ) , PMAP_ENTER_NOSLEEP , 0 ) ; m = TAILQ_NEXT ( m , listq ) ; } }
Maps a sequence of resident pages belonging to the same object.
Maps a sequence of resident pages belonging to the same object .