Lines Matching defs:page

22 	setting a register to another page directory, since we only have one
23 page table containing both kernel and user address mappings.
24 The 030 supports arbitrary layout of the page directory tree, including
37 Since page directories/tables don't fit exactly a page, we stuff more
38 than one per page, and allocate them all at once, and add them at the
40 the number of tables/page are either invalid or present.
147 // update page directory entry atomically
162 // update page directory entry atomically
177 // update page table entry atomically
194 // update page table entry atomically
259 // we should only be passed page va, but just in case.
281 TRACE(("clearing invalidated page count\n"));
364 vm_page *page;
372 page = vm_lookup_page(pgtbl_pn);
373 pgtbl = (page_table_entry *)page;
375 if (!page) {
376 panic("destroy_tmap: didn't find pgtable page\n");
379 DEBUG_PAGE_ACCESS_START(page);
380 vm_page_set_state(page, PAGE_STATE_FREE);
404 // ToDo: we ignore the attributes of the page table - for compatibility
427 // ToDo: we ignore the attributes of the page table - for compatibility
445 page_table_entry page;
446 init_page_table_entry(&page);
448 page.addr = TA_TO_PTEA(physicalAddress);
450 // if the page is user accessible, it's automatically
453 page.supervisor = (attributes & B_USER_PROTECTION) == 0;
454 if (page.supervisor)
455 page.write_protect = (attributes & B_KERNEL_WRITE_AREA) == 0;
457 page.write_protect = (attributes & B_WRITE_AREA) == 0;
458 page.type = DT_PAGE;
462 page.global = 1;
465 // put it in the page table
466 update_page_table_entry(entry, &page);
474 page_indirect_entry page;
475 init_page_indirect_entry(&page);
477 page.addr = TA_TO_PIEA(physicalAddress);
478 page.type = DT_INDIRECT;
482 // put it in the page table
483 update_page_indirect_entry(entry, &page);
500 // how much for page directories
502 // and page tables themselves
538 // check to see if a page directory exists for this range
542 vm_page *page;
546 page = vm_page_allocate_page(PAGE_STATE_WIRED | VM_PAGE_ALLOC_CLEAR);
548 DEBUG_PAGE_ACCESS_END(page);
550 pgdir = page->physical_page_number * B_PAGE_SIZE;
552 TRACE(("map_tmap: asked for free page for pgdir. 0x%lx\n", pgdir));
554 // for each pgdir on the allocated page:
563 // update any other page directories, if it maps kernel space
580 // we want the table at rindex, not at rindex%(tbl/page)
583 // check to see if a page table exists for this range
587 vm_page *page;
591 page = vm_page_allocate_page(PAGE_STATE_WIRED | VM_PAGE_ALLOC_CLEAR);
593 DEBUG_PAGE_ACCESS_END(page);
595 pgtable = page->physical_page_number * B_PAGE_SIZE;
597 TRACE(("map_tmap: asked for free page for pgtable. 0x%lx\n", pgtable));
599 // for each pgtable on the allocated page:
608 // no need to update other page directories for kernel space;
623 // we want the table at rindex, not at rindex%(tbl/page)
666 // no pagedir here, move the start up to access the next page table
676 // we want the table at rindex, not at rindex%(tbl/page)
681 // no pagetable here, move the start up to access the next page table
692 // we want the table at rindex, not at rindex%(tbl/page)
699 // page mapping not valid
703 TRACE(("unmap_tmap: removing page 0x%lx\n", start));
759 // we should only be passed page va, but just in case.
803 // we want the table at rindex, not at rindex%(tbl/page)
819 // we want the table at rindex, not at rindex%(tbl/page)
833 // add offset from start of page
835 // release the indirect table page
841 // read in the page state flags
888 // no pagedir here, move the start up to access the next page table
898 // we want the table at rindex, not at rindex%(tbl/page)
903 // no pagetable here, move the start up to access the next page table
914 // we want the table at rindex, not at rindex%(tbl/page)
922 // page mapping not valid
926 TRACE(("protect_tmap: protect page 0x%lx\n", start));
970 // we want the table at rindex, not at rindex%(tbl/page)
986 // we want the table at rindex, not at rindex%(tbl/page)
1000 // add offset from start of page
1002 // release the indirect table page
1070 pa &= ~(B_PAGE_SIZE - 1); // make sure it's page aligned
1071 va &= ~(B_PAGE_SIZE - 1); // make sure it's page aligned
1242 // page hole set up in stage2
1258 // allocate some space to hold physical page mapping info
1259 //XXX: check page count
1260 // we already have all page directories allocated by the bootloader,
1261 // we only need page tables
1269 // init physical page mapper
1283 // note the bootloader allocates all page directories for us
1299 // early_query handles non-page-aligned addresses
1326 // the page hole
1334 // unmap the page hole hack we were using before
1361 // page table, which is not yet enforced (or even tested)!
1370 // insert the indirect descriptor in the tree so we can map the page we want from it.
1395 // pa of the page
1403 // then the va for the page table for the query page.
1438 // XXX horrible back door to map a page quickly regardless of translation map object, etc.
1440 // uses a 'page hole' set up in the stage 2 bootloader. The page hole is created by pointing one of
1462 TRACE(("missing page root entry %d ai %d\n", index, aindex));
1466 TRACE(("early_map: asked for free page for pgdir. 0x%lx\n", tbl));
1469 // for each pgdir on the allocated page:
1486 TRACE(("missing page dir entry %d ai %d\n", index, aindex));
1490 TRACE(("early_map: asked for free page for pgtable. 0x%lx\n", tbl));
1493 // for each pgdir on the allocated page: