aboutsummaryrefslogtreecommitdiff
path: root/arch/loongarch
diff options
context:
space:
mode:
Diffstat (limited to 'arch/loongarch')
-rw-r--r--arch/loongarch/kernel/traps.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/loongarch/kernel/traps.c b/arch/loongarch/kernel/traps.c
index 97af82547725..9f092e1cc782 100644
--- a/arch/loongarch/kernel/traps.c
+++ b/arch/loongarch/kernel/traps.c
@@ -202,6 +202,15 @@ static void print_crmd(unsigned long x)
pr_cont(")\n");
}
+static void print_prmd(unsigned long x)
+{
+ printk(" PRMD: %08lx (", x);
+ print_plv_fragment("PPLV", (int) FIELD_GET(CSR_PRMD_PPLV, x));
+ print_bool_fragment("PIE", FIELD_GET(CSR_PRMD_PIE, x), false);
+ print_bool_fragment("PWE", FIELD_GET(CSR_PRMD_PWE, x), false);
+ pr_cont(")\n");
+}
+
static void __show_regs(const struct pt_regs *regs)
{
const int field = 2 * sizeof(unsigned long);
@@ -244,7 +253,7 @@ static void __show_regs(const struct pt_regs *regs)
/* Print saved important CSRs */
print_crmd(regs->csr_crmd);
- printk(" PRMD: %08lx\n", regs->csr_prmd);
+ print_prmd(regs->csr_prmd);
printk(" EUEN: %08lx\n", regs->csr_euen);
printk(" ECFG: %08lx\n", regs->csr_ecfg);
printk("ESTAT: %08lx\n", regs->csr_estat);