|
@@ -67,6 +67,12 @@ static struct addr_marker address_markers[] = {
|
|
|
{ -1, NULL },
|
|
|
};
|
|
|
|
|
|
+/*
|
|
|
+ * The page dumper groups page table entries of the same type into a single
|
|
|
+ * description. It uses pg_state to track the range information while
|
|
|
+ * iterating over the pte entries. When the continuity is broken it then
|
|
|
+ * dumps out a description of the range.
|
|
|
+ */
|
|
|
struct pg_state {
|
|
|
struct seq_file *seq;
|
|
|
const struct addr_marker *marker;
|
|
@@ -113,6 +119,16 @@ static const struct prot_bits pte_bits[] = {
|
|
|
.val = PTE_NG,
|
|
|
.set = "NG",
|
|
|
.clear = " ",
|
|
|
+ }, {
|
|
|
+ .mask = PTE_CONT,
|
|
|
+ .val = PTE_CONT,
|
|
|
+ .set = "CON",
|
|
|
+ .clear = " ",
|
|
|
+ }, {
|
|
|
+ .mask = PTE_TABLE_BIT,
|
|
|
+ .val = PTE_TABLE_BIT,
|
|
|
+ .set = " ",
|
|
|
+ .clear = "BLK",
|
|
|
}, {
|
|
|
.mask = PTE_UXN,
|
|
|
.val = PTE_UXN,
|
|
@@ -198,7 +214,7 @@ static void note_page(struct pg_state *st, unsigned long addr, unsigned level,
|
|
|
unsigned long delta;
|
|
|
|
|
|
if (st->current_prot) {
|
|
|
- seq_printf(st->seq, "0x%16lx-0x%16lx ",
|
|
|
+ seq_printf(st->seq, "0x%016lx-0x%016lx ",
|
|
|
st->start_address, addr);
|
|
|
|
|
|
delta = (addr - st->start_address) >> 10;
|