-/*
- * Remap wired pages in an object into a new region.
- * The object is assumed to be mapped into the kernel map or
- * a submap.
- */
-void
-kmem_remap_pages(
- register vm_object_t object,
- register vm_object_offset_t offset,
- register vm_offset_t start,
- register vm_offset_t end,
- vm_prot_t protection)
-{
-
- vm_map_offset_t map_start;
- vm_map_offset_t map_end;
-
- /*
- * Mark the pmap region as not pageable.
- */
- map_start = vm_map_trunc_page(start);
- map_end = vm_map_round_page(end);
-
- pmap_pageable(kernel_pmap, map_start, map_end, FALSE);
-
- while (map_start < map_end) {
- register vm_page_t mem;
-
- vm_object_lock(object);
-
- /*
- * Find a page
- */
- if ((mem = vm_page_lookup(object, offset)) == VM_PAGE_NULL)
- panic("kmem_remap_pages");
-
- /*
- * Wire it down (again)
- */
- vm_page_lockspin_queues();
- vm_page_wire(mem);
- vm_page_unlock_queues();
- vm_object_unlock(object);
-
- /*
- * ENCRYPTED SWAP:
- * The page is supposed to be wired now, so it
- * shouldn't be encrypted at this point. It can
- * safely be entered in the page table.
- */
- ASSERT_PAGE_DECRYPTED(mem);
-
- /*
- * Enter it in the kernel pmap. The page isn't busy,
- * but this shouldn't be a problem because it is wired.
- */
- PMAP_ENTER(kernel_pmap, map_start, mem, protection,
- ((unsigned int)(mem->object->wimg_bits))
- & VM_WIMG_MASK,
- TRUE);
-
- map_start += PAGE_SIZE;
- offset += PAGE_SIZE;
- }
-}
-