|
@@ -95,6 +95,22 @@ void __show_regs(struct pt_regs *regs)
|
|
|
{
|
|
|
unsigned long flags;
|
|
|
char buf[64];
|
|
|
+#ifndef CONFIG_CPU_V7M
|
|
|
+ unsigned int domain;
|
|
|
+#ifdef CONFIG_CPU_SW_DOMAIN_PAN
|
|
|
+ /*
|
|
|
+ * Get the domain register for the parent context. In user
|
|
|
+ * mode, we don't save the DACR, so lets use what it should
|
|
|
+ * be. For other modes, we place it after the pt_regs struct.
|
|
|
+ */
|
|
|
+ if (user_mode(regs))
|
|
|
+ domain = DACR_UACCESS_ENABLE;
|
|
|
+ else
|
|
|
+ domain = *(unsigned int *)(regs + 1);
|
|
|
+#else
|
|
|
+ domain = get_domain();
|
|
|
+#endif
|
|
|
+#endif
|
|
|
|
|
|
show_regs_print_info(KERN_DEFAULT);
|
|
|
|
|
@@ -123,21 +139,8 @@ void __show_regs(struct pt_regs *regs)
|
|
|
|
|
|
#ifndef CONFIG_CPU_V7M
|
|
|
{
|
|
|
- unsigned int domain = get_domain();
|
|
|
const char *segment;
|
|
|
|
|
|
-#ifdef CONFIG_CPU_SW_DOMAIN_PAN
|
|
|
- /*
|
|
|
- * Get the domain register for the parent context. In user
|
|
|
- * mode, we don't save the DACR, so lets use what it should
|
|
|
- * be. For other modes, we place it after the pt_regs struct.
|
|
|
- */
|
|
|
- if (user_mode(regs))
|
|
|
- domain = DACR_UACCESS_ENABLE;
|
|
|
- else
|
|
|
- domain = *(unsigned int *)(regs + 1);
|
|
|
-#endif
|
|
|
-
|
|
|
if ((domain & domain_mask(DOMAIN_USER)) ==
|
|
|
domain_val(DOMAIN_USER, DOMAIN_NOACCESS))
|
|
|
segment = "none";
|
|
@@ -163,11 +166,11 @@ void __show_regs(struct pt_regs *regs)
|
|
|
buf[0] = '\0';
|
|
|
#ifdef CONFIG_CPU_CP15_MMU
|
|
|
{
|
|
|
- unsigned int transbase, dac = get_domain();
|
|
|
+ unsigned int transbase;
|
|
|
asm("mrc p15, 0, %0, c2, c0\n\t"
|
|
|
: "=r" (transbase));
|
|
|
snprintf(buf, sizeof(buf), " Table: %08x DAC: %08x",
|
|
|
- transbase, dac);
|
|
|
+ transbase, domain);
|
|
|
}
|
|
|
#endif
|
|
|
asm("mrc p15, 0, %0, c1, c0\n" : "=r" (ctrl));
|