Lines Matching full:addr
18 static inline unsigned long sske_frame(unsigned long addr, unsigned char skey) in sske_frame() argument
20 asm volatile(".insn rrf,0xb22b0000,%[skey],%[addr],1,0" in sske_frame()
21 : [addr] "+a" (addr) : [skey] "d" (skey)); in sske_frame()
22 return addr; in sske_frame()
60 static void pgt_set(unsigned long *old, unsigned long new, unsigned long addr, in pgt_set() argument
79 crdte(*old, new, table, dtt, addr, get_lowcore()->kernel_asce.val); in pgt_set()
87 static int walk_pte_level(pmd_t *pmdp, unsigned long addr, unsigned long end, in walk_pte_level() argument
94 ptep = pte_offset_kernel(pmdp, addr); in walk_pte_level()
113 pgt_set((unsigned long *)ptep, pte_val(new), addr, CRDTE_DTT_PAGE); in walk_pte_level()
115 addr += PAGE_SIZE; in walk_pte_level()
117 } while (addr < end); in walk_pte_level()
121 static int split_pmd_page(pmd_t *pmdp, unsigned long addr) in split_pmd_page() argument
144 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT); in split_pmd_page()
150 static void modify_pmd_page(pmd_t *pmdp, unsigned long addr, in modify_pmd_page() argument
169 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT); in modify_pmd_page()
172 static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end, in walk_pmd_level() argument
180 pmdp = pmd_offset(pudp, addr); in walk_pmd_level()
184 next = pmd_addr_end(addr, end); in walk_pmd_level()
187 need_split |= !!(addr & ~PMD_MASK); in walk_pmd_level()
188 need_split |= !!(addr + PMD_SIZE > next); in walk_pmd_level()
190 rc = split_pmd_page(pmdp, addr); in walk_pmd_level()
195 modify_pmd_page(pmdp, addr, flags); in walk_pmd_level()
197 rc = walk_pte_level(pmdp, addr, next, flags); in walk_pmd_level()
202 addr = next; in walk_pmd_level()
204 } while (addr < end); in walk_pmd_level()
208 static int split_pud_page(pud_t *pudp, unsigned long addr) in split_pud_page() argument
231 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in split_pud_page()
237 static void modify_pud_page(pud_t *pudp, unsigned long addr, in modify_pud_page() argument
256 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in modify_pud_page()
259 static int walk_pud_level(p4d_t *p4d, unsigned long addr, unsigned long end, in walk_pud_level() argument
267 pudp = pud_offset(p4d, addr); in walk_pud_level()
271 next = pud_addr_end(addr, end); in walk_pud_level()
274 need_split |= !!(addr & ~PUD_MASK); in walk_pud_level()
275 need_split |= !!(addr + PUD_SIZE > next); in walk_pud_level()
277 rc = split_pud_page(pudp, addr); in walk_pud_level()
282 modify_pud_page(pudp, addr, flags); in walk_pud_level()
284 rc = walk_pmd_level(pudp, addr, next, flags); in walk_pud_level()
287 addr = next; in walk_pud_level()
289 } while (addr < end && !rc); in walk_pud_level()
293 static int walk_p4d_level(pgd_t *pgd, unsigned long addr, unsigned long end, in walk_p4d_level() argument
300 p4dp = p4d_offset(pgd, addr); in walk_p4d_level()
304 next = p4d_addr_end(addr, end); in walk_p4d_level()
305 rc = walk_pud_level(p4dp, addr, next, flags); in walk_p4d_level()
307 addr = next; in walk_p4d_level()
309 } while (addr < end && !rc); in walk_p4d_level()
315 static int change_page_attr(unsigned long addr, unsigned long end, in change_page_attr() argument
322 pgdp = pgd_offset_k(addr); in change_page_attr()
326 next = pgd_addr_end(addr, end); in change_page_attr()
327 rc = walk_p4d_level(pgdp, addr, next, flags); in change_page_attr()
331 } while (pgdp++, addr = next, addr < end && !rc); in change_page_attr()
335 static int change_page_attr_alias(unsigned long addr, unsigned long end, in change_page_attr_alias() argument
352 while (addr < end) { in change_page_attr_alias()
354 area = find_vm_area((void *)addr); in change_page_attr_alias()
357 va_start = (unsigned long)area->addr; in change_page_attr_alias()
359 offset = (addr - va_start) >> PAGE_SHIFT; in change_page_attr_alias()
364 addr += PAGE_SIZE; in change_page_attr_alias()
365 if (addr >= va_end) in change_page_attr_alias()
371 int __set_memory(unsigned long addr, unsigned long numpages, unsigned long flags) in __set_memory() argument
382 addr &= PAGE_MASK; in __set_memory()
383 end = addr + numpages * PAGE_SIZE; in __set_memory()
385 rc = change_page_attr(addr, end, flags); in __set_memory()
388 rc = change_page_attr_alias(addr, end, flags); in __set_memory()
418 unsigned long addr; in kernel_page_present() local
421 addr = (unsigned long)page_address(page); in kernel_page_present()
423 " lra %[addr],0(%[addr])\n" in kernel_page_present()
425 : CC_OUT(cc, cc), [addr] "+a" (addr) in kernel_page_present()