On 28.01.2026 13:53, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/traps.c
> +++ b/xen/arch/riscv/traps.c
> @@ -99,11 +99,65 @@ static const char *decode_cause(unsigned long cause)
>      return decode_trap_cause(cause);
>  }
>  
> -static void do_unexpected_trap(const struct cpu_user_regs *regs)
> +static void dump_general_regs(const struct cpu_user_regs *regs)
>  {
> -    unsigned long cause = csr_read(CSR_SCAUSE);
> +#define X(regs, name, delim) \
> +    printk("%-4s: %016lx" delim, #name, (regs)->name)
> +
> +    X(regs, ra, " "); X(regs, sp, "\n");
> +    X(regs, gp, " "); X(regs, tp, "\n");
> +    X(regs, t0, " "); X(regs, t1, "\n");
> +    X(regs, t2, " "); X(regs, s0, "\n");
> +    X(regs, s1, " "); X(regs, a0, "\n");
> +    X(regs, a1, " "); X(regs, a2, "\n");
> +    X(regs, a3, " "); X(regs, a4, "\n");
> +    X(regs, a5, " "); X(regs, a6, "\n");
> +    X(regs, a7, " "); X(regs, s2, "\n");
> +    X(regs, s3, " "); X(regs, s4, "\n");
> +    X(regs, s5, " "); X(regs, s6, "\n");
> +    X(regs, s7, " "); X(regs, s8, "\n");
> +    X(regs, s9, " "); X(regs, s10, "\n");
> +    X(regs, s11, " "); X(regs, t3, "\n");
> +    X(regs, t4, " "); X(regs, t5, "\n");
> +    X(regs, t6, " ");

DYM "\n" here?

> +#undef X
> +}
> +
> +static void dump_csrs(const char *ctx)
> +{
> +#define X(name, csr, fmt, ...) \
> +    v = csr_read(csr); \
> +    printk("%-10s: %016lx" fmt, #name, v, ##__VA_ARGS__)
> +
> +    unsigned long v;
> +
> +    X(htval, CSR_HTVAL, " ");  X(htinst, CSR_HTINST, "\n");
> +    X(hedeleg, CSR_HEDELEG, " "); X(hideleg, CSR_HIDELEG, "\n");
> +    X(hstatus, CSR_HSTATUS, " [%s%s%s%s%s%s ]\n",
> +      (v & HSTATUS_VTSR) ? " VTSR" : "",
> +      (v & HSTATUS_VTVM) ? " VTVM" : "",
> +      (v & HSTATUS_HU)   ? " HU"   : "",
> +      (v & HSTATUS_SPVP) ? " SPVP" : "",
> +      (v & HSTATUS_SPV)  ? " SPV"  : "",
> +      (v & HSTATUS_GVA)  ? " GVA"  : "");
> +    X(hgatp, CSR_HGATP, "\n");
> +    X(hstateen0, CSR_HSTATEEN0, "\n");
> +    X(stvec, CSR_STVEC, " "); X(vstvec, CSR_VSTVEC, "\n");
> +    X(sepc, CSR_SEPC, " "); X(vsepc, CSR_VSEPC, "\n");
> +    X(stval, CSR_STVAL, " "); X(vstval, CSR_VSTVAL, "\n");
> +    X(status, CSR_SSTATUS, " "); X(vsstatus, CSR_VSSTATUS, "\n");
> +    X(satp, CSR_SATP, "\n");
> +    X(scause, CSR_SCAUSE, " %s[%s]\n", ctx, decode_cause(v));

For it, in particular the "ctx" string, to stand out, perhaps this wants moving
first in the function?

With the adjustments (happy to carry out while committing, so long as you 
agree):
Acked-by: Jan Beulich <[email protected]>

Jan

Reply via email to