Hi Arnd, On Mon, Feb 28, 2022 at 12:30 AM <guoren@xxxxxxxxxx> wrote: > > From: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > > If the current task is in COMPAT mode, set SR_UXL_32 in status for > returning userspace. We need CONFIG _COMPAT to prevent compiling > errors with rv32 defconfig. > > Signed-off-by: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > Signed-off-by: Guo Ren <guoren@xxxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx> > --- > arch/riscv/kernel/process.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c > index 03ac3aa611f5..54787ca9806a 100644 > --- a/arch/riscv/kernel/process.c > +++ b/arch/riscv/kernel/process.c > @@ -97,6 +97,11 @@ void start_thread(struct pt_regs *regs, unsigned long pc, > } > regs->epc = pc; > regs->sp = sp; > + FIxup: + #ifdef CONFIG_COMPAT > + if (is_compat_task()) > + regs->status = (regs->status & ~SR_UXL) | SR_UXL_32; > + else > + regs->status = (regs->status & ~SR_UXL) | SR_UXL_64; + #endif We still need "#ifdef CONFIG_COMPAT" here, because for rv32 we can't set SR_UXL at all. SR_UXL is BIT[32, 33]. > } > > void flush_thread(void) > -- > 2.25.1 > -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/