Lines Matching refs:pte

92 static int pte_type(u64 *pte)  in pte_type()  argument
94 return *pte & PTE_TYPE_MASK; in pte_type()
107 u64 *pte; in find_pte() local
122 pte = (u64*)gd->arch.tlb_addr; in find_pte()
125 pte += idx; in find_pte()
126 pr_debug("idx=%llx PTE %p at level %d: %llx\n", idx, pte, i, *pte); in find_pte()
130 return pte; in find_pte()
132 if (pte_type(pte) != PTE_TYPE_TABLE) in find_pte()
135 pte = (u64*)(*pte & 0x0000fffffffff000ULL); in find_pte()
163 static void set_pte_table(u64 *pte, u64 *table) in set_pte_table() argument
166 pr_debug("Setting %p to addr=%p\n", pte, table); in set_pte_table()
167 *pte = PTE_TYPE_TABLE | (ulong)table; in set_pte_table()
171 static void split_block(u64 *pte, int level) in split_block() argument
173 u64 old_pte = *pte; in split_block()
179 if (pte_type(pte) != PTE_TYPE_BLOCK) in split_block()
182 "mem_map.", pte, old_pte); in split_block()
185 pr_debug("Splitting pte %p (%llx) into %p\n", pte, old_pte, new_table); in split_block()
198 set_pte_table(pte, new_table); in split_block()
204 u64 *pte; in add_map() local
214 pte = find_pte(virt, 0); in add_map()
215 if (pte && (pte_type(pte) == PTE_TYPE_FAULT)) { in add_map()
218 set_pte_table(pte, new_table); in add_map()
222 pte = find_pte(virt, level); in add_map()
223 if (!pte) in add_map()
232 pte, virt); in add_map()
234 *pte = phys | attrs | PTE_TYPE_PAGE; in add_map()
236 *pte = phys | attrs; in add_map()
241 } else if (pte_type(pte) == PTE_TYPE_FAULT) { in add_map()
246 set_pte_table(pte, new_table); in add_map()
247 } else if (pte_type(pte) == PTE_TYPE_BLOCK) { in add_map()
250 split_block(pte, level); in add_map()
512 u64 *pte = find_pte(start, level); in set_one_region() local
517 *pte &= ~PMD_ATTRMASK; in set_one_region()
518 *pte |= attrs & PMD_ATTRMASK; in set_one_region()
520 *pte &= ~PMD_ATTRINDX_MASK; in set_one_region()
521 *pte |= attrs & PMD_ATTRINDX_MASK; in set_one_region()
523 pr_debug("Set attrs=%llx pte=%p level=%d\n", attrs, pte, level); in set_one_region()
529 pr_debug("addr=%llx level=%d pte=%p (%llx)\n", start, level, pte, *pte); in set_one_region()
532 if (pte_type(pte) == PTE_TYPE_BLOCK) in set_one_region()
533 split_block(pte, level); in set_one_region()
536 if (pte_type(pte) != PTE_TYPE_TABLE) in set_one_region()
538 pte, *pte, start); in set_one_region()