• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/barrelfish/arch/x86_64/

Lines Matching refs:info

662                          struct find_mapping_info *info)
697 if (info) {
698 info->page_table = pt;
699 info->page = page;
700 info->page_size = page_size;
701 info->table_base = table_base;
702 info->map_bits = map_bits;
715 struct find_mapping_info info;
717 if (!find_mapping(pmap, vaddr, &info)) {
720 assert(info.page_table && info.page_table->is_vnode && info.page && !info.page->is_vnode);
722 if (info.page->u.frame.pte_count == pte_count) {
723 err = vnode_unmap(info.page_table->u.vnode.cap, info.page->mapping);
731 err = cap_delete(info.page->mapping);
735 err = pmap->p.slot_alloc->free(pmap->p.slot_alloc, info.page->mapping);
740 remove_vnode(info.page_table, info.page);
741 slab_free(&pmap->slab, info.page);
763 struct find_mapping_info info;
765 if (!find_mapping(x86, vaddr, &info)) {
770 assert(!info.page->is_vnode);
772 if (info.page->entry > info.table_base) {
779 size = ROUND_UP(size, info.page_size);
783 (is_same_pdpt(vaddr, vend) && is_large_page(info.page)) ||
784 (is_same_pml4(vaddr, vend) && is_huge_page(info.page)))
787 err = do_single_unmap(x86, vaddr, size / info.page_size);
795 uint32_t c = X86_64_PTABLE_SIZE - info.table_base;
804 vaddr += c * info.page_size;
805 while (get_addr_prefix(vaddr, info.map_bits) < get_addr_prefix(vend, info.map_bits)) {
812 vaddr += c * info.page_size;
818 c = get_addr_prefix(vend, info.map_bits - X86_64_PTABLE_BITS) -
819 get_addr_prefix(vaddr, info.map_bits - X86_64_PTABLE_BITS);
843 struct find_mapping_info info;
845 if (!find_mapping(pmap, vaddr, &info)) {
849 assert(info.page_table && info.page_table->is_vnode && info.page && !info.page->is_vnode);
851 if (inside_region(info.page_table, info.table_base, pages)) {
857 size_t off = info.table_base - info.page->entry;
863 va_hint = vaddr & ~(info.page_size - 1);
865 err = invoke_mapping_modify_flags(info.page->mapping, off, pages,
894 struct find_mapping_info info;
896 if (!find_mapping(x86, vaddr, &info)) {
900 assert(info.page && !info.page->is_vnode);
903 size = ROUND_UP(size, info.page_size);
906 size_t pages = size / info.page_size;
911 (is_same_pdpt(vaddr, vend) && is_large_page(info.page)) ||
912 (is_same_pml4(vaddr, vend) && is_huge_page(info.page))) {
921 uint32_t c = X86_64_PTABLE_SIZE - info.table_base;
928 vaddr += c * info.page_size;
929 while (get_addr_prefix(vaddr, info.map_bits) < get_addr_prefix(vend, info.map_bits)) {
935 vaddr += c * info.page_size;
939 c = get_addr_prefix(vend, info.map_bits - X86_64_PTABLE_BITS) -
940 get_addr_prefix(vaddr, info.map_bits - X86_64_PTABLE_BITS);
971 struct pmap_mapping_info *info)
982 if (info) {
983 info->vaddr = vaddr & ~(genvaddr_t)(find_info.page_size - 1);
984 info->size = find_info.page_size;
985 info->cap = find_info.page->u.frame.cap;
986 info->offset = find_info.page->u.frame.offset;
987 info->flags = find_info.page->u.frame.flags;
988 info->mapping = find_info.page->mapping;