Lines Matching refs:st
201 static void dump_prot(struct pg_state *st, const struct prot_bits *bits, size_t num) in dump_prot() argument
208 if ((st->current_prot & bits->mask) == bits->val) in dump_prot()
214 seq_printf(st->seq, " %s", s); in dump_prot()
218 static void note_page(struct pg_state *st, unsigned long addr, unsigned level, u64 val) in note_page() argument
223 if (!st->level) { in note_page()
224 st->level = level; in note_page()
225 st->current_prot = prot; in note_page()
226 seq_printf(st->seq, "---[ %s ]---\n", st->marker->name); in note_page()
227 } else if (prot != st->current_prot || level != st->level || in note_page()
228 addr >= st->marker[1].start_address) { in note_page()
232 if (st->current_prot) { in note_page()
233 seq_printf(st->seq, "0x%08lx-0x%08lx ", in note_page()
234 st->start_address, addr); in note_page()
236 delta = (addr - st->start_address) >> 10; in note_page()
241 seq_printf(st->seq, "%9lu%c", delta, *unit); in note_page()
242 if (pg_level[st->level].bits) in note_page()
243 dump_prot(st, pg_level[st->level].bits, pg_level[st->level].num); in note_page()
244 seq_printf(st->seq, "\n"); in note_page()
247 if (addr >= st->marker[1].start_address) { in note_page()
248 st->marker++; in note_page()
249 seq_printf(st->seq, "---[ %s ]---\n", st->marker->name); in note_page()
251 st->start_address = addr; in note_page()
252 st->current_prot = prot; in note_page()
253 st->level = level; in note_page()
257 static void walk_pte(struct pg_state *st, pmd_t *pmd, unsigned long start) in walk_pte() argument
265 note_page(st, addr, 4, pte_val(*pte)); in walk_pte()
269 static void walk_pmd(struct pg_state *st, pud_t *pud, unsigned long start) in walk_pmd() argument
278 note_page(st, addr, 3, pmd_val(*pmd)); in walk_pmd()
280 walk_pte(st, pmd, addr); in walk_pmd()
283 note_page(st, addr + SECTION_SIZE, 3, pmd_val(pmd[1])); in walk_pmd()
287 static void walk_pud(struct pg_state *st, pgd_t *pgd, unsigned long start) in walk_pud() argument
296 walk_pmd(st, pud, addr); in walk_pud()
298 note_page(st, addr, 2, pud_val(*pud)); in walk_pud()
306 struct pg_state st; in walk_pgd() local
310 memset(&st, 0, sizeof(st)); in walk_pgd()
311 st.seq = m; in walk_pgd()
312 st.marker = address_markers; in walk_pgd()
317 walk_pud(&st, pgd, addr); in walk_pgd()
319 note_page(&st, addr, 1, pgd_val(*pgd)); in walk_pgd()
323 note_page(&st, 0, 0, 0); in walk_pgd()