pr_cont("%s", name);
pr_cont("\n");
}
+
+static void show_vmalloc_pfn(struct pt_regs *regs)
+{
+ int i;
+ struct page *page;
+
+ for (i = 0; i < 16; i++) {
+ if (is_vmalloc_or_module_addr((void *)regs->uregs[i])) {
+ page = vmalloc_to_page((void *)regs->uregs[i]);
+ if (!page)
+ continue;
+ pr_info("R%-2d : %08lx, PFN:%5lx\n",
+ i, regs->uregs[i], page_to_pfn(page));
+ }
+ }
+
+}
#endif /* CONFIG_AMLOGIC_USER_FAULT */
void __show_regs(struct pt_regs *regs)
buf[3] = flags & PSR_V_BIT ? 'V' : 'v';
buf[4] = '\0';
+#ifdef CONFIG_AMLOGIC_USER_FAULT
+ show_vmalloc_pfn(regs);
+#endif
+
#ifndef CONFIG_CPU_V7M
{
const char *segment;
pr_cont("\n");
}
}
+
+static void show_vmalloc_pfn(struct pt_regs *regs)
+{
+ int i;
+ struct page *page;
+
+ for (i = 0; i < 16; i++) {
+ if (is_vmalloc_or_module_addr((void *)regs->regs[i])) {
+ page = vmalloc_to_page((void *)regs->regs[i]);
+ if (!page)
+ continue;
+ pr_info("R%-2d : %016llx, PFN:%5lx\n",
+ i, regs->regs[i], page_to_pfn(page));
+ }
+ }
+
+}
#endif /* CONFIG_AMLOGIC_USER_FAULT */
static void show_extra_register_data(struct pt_regs *regs, int nbytes)
show_vma(current->mm, instruction_pointer(regs));
show_vma(current->mm, lr);
}
+ show_vmalloc_pfn(regs);
#endif /* CONFIG_AMLOGIC_USER_FAULT */
printk("pc : [<%016llx>] lr : [<%016llx>] pstate: %08llx\n",
regs->pc, lr, regs->pstate);