Lines Matching refs:addr
17 static inline unsigned long sske_frame(unsigned long addr, unsigned char skey)
19 asm volatile(".insn rrf,0xb22b0000,%[skey],%[addr],1,0"
20 : [addr] "+a" (addr) : [skey] "d" (skey));
21 return addr;
59 static void pgt_set(unsigned long *old, unsigned long new, unsigned long addr,
78 crdte(*old, new, table, dtt, addr, S390_lowcore.kernel_asce);
86 static int walk_pte_level(pmd_t *pmdp, unsigned long addr, unsigned long end,
93 ptep = pte_offset_kernel(pmdp, addr);
114 pgt_set((unsigned long *)ptep, pte_val(new), addr, CRDTE_DTT_PAGE);
116 addr += PAGE_SIZE;
118 } while (addr < end);
122 static int split_pmd_page(pmd_t *pmdp, unsigned long addr)
145 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT);
151 static void modify_pmd_page(pmd_t *pmdp, unsigned long addr,
172 pgt_set((unsigned long *)pmdp, pmd_val(new), addr, CRDTE_DTT_SEGMENT);
175 static int walk_pmd_level(pud_t *pudp, unsigned long addr, unsigned long end,
183 pmdp = pmd_offset(pudp, addr);
187 next = pmd_addr_end(addr, end);
190 need_split |= !!(addr & ~PMD_MASK);
191 need_split |= !!(addr + PMD_SIZE > next);
193 rc = split_pmd_page(pmdp, addr);
198 modify_pmd_page(pmdp, addr, flags);
200 rc = walk_pte_level(pmdp, addr, next, flags);
205 addr = next;
207 } while (addr < end);
211 static int split_pud_page(pud_t *pudp, unsigned long addr)
234 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3);
240 static void modify_pud_page(pud_t *pudp, unsigned long addr,
261 pgt_set((unsigned long *)pudp, pud_val(new), addr, CRDTE_DTT_REGION3);
264 static int walk_pud_level(p4d_t *p4d, unsigned long addr, unsigned long end,
272 pudp = pud_offset(p4d, addr);
276 next = pud_addr_end(addr, end);
279 need_split |= !!(addr & ~PUD_MASK);
280 need_split |= !!(addr + PUD_SIZE > next);
282 rc = split_pud_page(pudp, addr);
287 modify_pud_page(pudp, addr, flags);
289 rc = walk_pmd_level(pudp, addr, next, flags);
292 addr = next;
294 } while (addr < end && !rc);
298 static int walk_p4d_level(pgd_t *pgd, unsigned long addr, unsigned long end,
305 p4dp = p4d_offset(pgd, addr);
309 next = p4d_addr_end(addr, end);
310 rc = walk_pud_level(p4dp, addr, next, flags);
312 addr = next;
314 } while (addr < end && !rc);
320 static int change_page_attr(unsigned long addr, unsigned long end,
327 pgdp = pgd_offset_k(addr);
331 next = pgd_addr_end(addr, end);
332 rc = walk_p4d_level(pgdp, addr, next, flags);
336 } while (pgdp++, addr = next, addr < end && !rc);
340 static int change_page_attr_alias(unsigned long addr, unsigned long end,
357 while (addr < end) {
359 area = find_vm_area((void *)addr);
362 va_start = (unsigned long)area->addr;
364 offset = (addr - va_start) >> PAGE_SHIFT;
369 addr += PAGE_SIZE;
370 if (addr >= va_end)
376 int __set_memory(unsigned long addr, unsigned long numpages, unsigned long flags)
387 addr &= PAGE_MASK;
388 end = addr + numpages * PAGE_SIZE;
390 rc = change_page_attr(addr, end, flags);
393 rc = change_page_attr_alias(addr, end, flags);