Lines Matching refs:page

244 	// cycle through and free all of the user space page tables
258 vm_page* page = vm_lookup_page(address / B_PAGE_SIZE);
259 if (page == NULL)
261 "didn't find page table page: page address: %#"
265 DEBUG_PAGE_ACCESS_START(page);
266 vm_page_set_state(page, PAGE_STATE_FREE);
290 // get the physical page mapper
299 // allocate a physical page mapper
307 // lot, since it allows us to just use the upper two page directories
308 // of the kernel and create two new lower page directories for the
312 // allocate the page directories (both at once)
321 // clear the userland page directories
324 // use the upper two kernel page directories
330 // look up the page directories' physical addresses
384 // check to see if a page table exists for this range
389 // we need to allocate a page table
390 vm_page *page = vm_page_allocate_page(reservation,
393 DEBUG_PAGE_ACCESS_END(page);
396 = (phys_addr_t)page->physical_page_number * B_PAGE_SIZE;
398 TRACE("X86VMTranslationMapPAE::Map(): asked for free page for "
399 "page table: %#" B_PRIxPHYSADDR "\n", physicalPageTable);
401 // put it in the page dir
411 // now, fill in the page table entry
456 // no page table here, move the start up to access the next page
473 // page mapping not valid
477 TRACE("X86VMTranslationMapPAE::Unmap(): removing page %#"
514 // no page table here, move the start up to access the next page
559 /*! Caller must have locked the cache of the page to be unmapped.
593 // page mapping not valid
607 // NOTE: Between clearing the page table entry and Flush() other
609 // same team) could still access the page in question via their cached
611 // effect that the page looks unmodified (and might thus be recycled),
652 // no page table here, move the start up to access the next page
685 // get the page
686 vm_page* page = vm_lookup_page(
688 ASSERT(page != NULL);
690 DEBUG_PAGE_ACCESS_START(page);
692 // transfer the accessed/dirty flags to the page
694 page->accessed = true;
696 page->modified = true;
699 // page
703 = page->mappings.GetIterator();
712 page->mappings.Remove(mapping);
715 page->DecrementWiredCount();
717 if (!page->IsMapped()) {
721 if (page->Cache()->temporary)
722 vm_page_set_state(page, PAGE_STATE_INACTIVE);
723 else if (page->modified)
724 vm_page_set_state(page, PAGE_STATE_MODIFIED);
726 vm_page_set_state(page, PAGE_STATE_CACHED);
730 DEBUG_PAGE_ACCESS_END(page);
738 // TODO: As in UnmapPage() we can lose page dirty flags here. ATM it's not
773 vm_page* page = mapping->page;
774 page->mappings.Remove(mapping);
776 VMCache* cache = page->Cache();
779 if (!page->IsMapped()) {
786 + ((page->cache_offset * B_PAGE_SIZE) - area->cache_offset);
792 panic("page %p has mapping for area %p (%#" B_PRIxADDR "), but "
793 "has no page dir entry", page, area, address);
810 panic("page %p has mapping for area %p (%#" B_PRIxADDR "), but "
811 "has no page table entry", page, area, address);
817 // transfer the accessed/dirty flags to the page and invalidate
820 page->accessed = true;
827 page->modified = true;
830 DEBUG_PAGE_ACCESS_START(page);
833 vm_page_set_state(page, PAGE_STATE_INACTIVE);
834 else if (page->modified)
835 vm_page_set_state(page, PAGE_STATE_MODIFIED);
837 vm_page_set_state(page, PAGE_STATE_CACHED);
839 DEBUG_PAGE_ACCESS_END(page);
844 + ((page->cache_offset * B_PAGE_SIZE) - area->cache_offset);
890 // get the page directory entry
899 // get the page table entry
913 // translate the page state flags
943 // get the page directory entry
952 // get the page table entry
962 // translate the page state flags
1014 // no page table here, move the start up to access the next page
1032 // page mapping not valid
1036 TRACE("X86VMTranslationMapPAE::Protect(): protect page %#"
1141 // page mapping not valid
1146 // page was accessed -- just clear the flags
1154 // page hasn't been accessed -- unmap it
1204 // get the page directory
1208 kprintf("page directory: %p (PDPT[%zu])\n", pageDirectory,
1211 // get the page directory entry
1214 kprintf("page directory entry %zu (%p): %#" B_PRIx64 "\n",
1243 // get the page table entry
1248 kprintf("page table: %#" B_PRIx64 "\n",
1252 kprintf("page table entry %zu (phys: %#" B_PRIx64 "): %#" B_PRIx64 "\n",
1300 // iterate through the page directory
1308 // get and iterate through the page table