Lines Matching full:addr

19 static inline unsigned long sske_frame(unsigned long addr, unsigned char skey)  in sske_frame()  argument
21 asm volatile(".insn rrf,0xb22b0000,%[skey],%[addr],1,0" in sske_frame()
22 : [addr] "+a" (addr) : [skey] "d" (skey)); in sske_frame()
23 return addr; in sske_frame()
61 static void pgt_set(unsigned long *old, unsigned long new, unsigned long addr, in pgt_set() argument
80 crdte(*old, new, table, dtt, addr, get_lowcore()->kernel_asce.val); in pgt_set()
88 static int walk_pte_level(pmd_t *pmdp, unsigned long addr, unsigned long end, in walk_pte_level() argument
95 ptep = pte_offset_kernel(pmdp, addr); in walk_pte_level()
114 pgt_set((unsigned long *)ptep, pte_val(new), addr, CRDTE_DTT_PAGE); in walk_pte_level()
116 addr += PAGE_SIZE; in walk_pte_level()
118 } while (addr < end); in walk_pte_level()
122 static int split_pmd_page(pmd_t *pmdp, unsigned long addr) in split_pmd_page() argument
145 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT); in split_pmd_page()
151 static void modify_pmd_page(pmd_t *pmdp, unsigned long addr, in modify_pmd_page() argument
170 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT); in modify_pmd_page()
173 static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end, in walk_pmd_level() argument
181 pmdp = pmd_offset(pudp, addr); in walk_pmd_level()
185 next = pmd_addr_end(addr, end); in walk_pmd_level()
188 need_split |= !!(addr & ~PMD_MASK); in walk_pmd_level()
189 need_split |= !!(addr + PMD_SIZE > next); in walk_pmd_level()
191 rc = split_pmd_page(pmdp, addr); in walk_pmd_level()
196 modify_pmd_page(pmdp, addr, flags); in walk_pmd_level()
198 rc = walk_pte_level(pmdp, addr, next, flags); in walk_pmd_level()
203 addr = next; in walk_pmd_level()
205 } while (addr < end); in walk_pmd_level()
209 static int split_pud_page(pud_t *pudp, unsigned long addr) in split_pud_page() argument
232 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in split_pud_page()
238 static void modify_pud_page(pud_t *pudp, unsigned long addr, in modify_pud_page() argument
257 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3); in modify_pud_page()
260 static int walk_pud_level(p4d_t *p4d, unsigned long addr, unsigned long end, in walk_pud_level() argument
268 pudp = pud_offset(p4d, addr); in walk_pud_level()
272 next = pud_addr_end(addr, end); in walk_pud_level()
275 need_split |= !!(addr & ~PUD_MASK); in walk_pud_level()
276 need_split |= !!(addr + PUD_SIZE > next); in walk_pud_level()
278 rc = split_pud_page(pudp, addr); in walk_pud_level()
283 modify_pud_page(pudp, addr, flags); in walk_pud_level()
285 rc = walk_pmd_level(pudp, addr, next, flags); in walk_pud_level()
288 addr = next; in walk_pud_level()
290 } while (addr < end && !rc); in walk_pud_level()
294 static int walk_p4d_level(pgd_t *pgd, unsigned long addr, unsigned long end, in walk_p4d_level() argument
301 p4dp = p4d_offset(pgd, addr); in walk_p4d_level()
305 next = p4d_addr_end(addr, end); in walk_p4d_level()
306 rc = walk_pud_level(p4dp, addr, next, flags); in walk_p4d_level()
308 addr = next; in walk_p4d_level()
310 } while (addr < end && !rc); in walk_p4d_level()
316 static int change_page_attr(unsigned long addr, unsigned long end, in change_page_attr() argument
323 pgdp = pgd_offset_k(addr); in change_page_attr()
327 next = pgd_addr_end(addr, end); in change_page_attr()
328 rc = walk_p4d_level(pgdp, addr, next, flags); in change_page_attr()
332 } while (pgdp++, addr = next, addr < end && !rc); in change_page_attr()
336 static int change_page_attr_alias(unsigned long addr, unsigned long end, in change_page_attr_alias() argument
353 while (addr < end) { in change_page_attr_alias()
355 area = find_vm_area((void *)addr); in change_page_attr_alias()
358 va_start = (unsigned long)area->addr; in change_page_attr_alias()
360 offset = (addr - va_start) >> PAGE_SHIFT; in change_page_attr_alias()
365 addr += PAGE_SIZE; in change_page_attr_alias()
366 if (addr >= va_end) in change_page_attr_alias()
372 int __set_memory(unsigned long addr, unsigned long numpages, unsigned long flags) in __set_memory() argument
383 addr &= PAGE_MASK; in __set_memory()
384 end = addr + numpages * PAGE_SIZE; in __set_memory()
386 rc = change_page_attr(addr, end, flags); in __set_memory()
389 rc = change_page_attr_alias(addr, end, flags); in __set_memory()
419 unsigned long addr; in kernel_page_present() local
422 addr = (unsigned long)page_address(page); in kernel_page_present()
424 " lra %[addr],0(%[addr])\n" in kernel_page_present()
426 : CC_OUT(cc, cc), [addr] "+a" (addr) in kernel_page_present()