diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index 504b496787aa4d384e5bae04dc35bf5f104123d7..b4421c16198ca4c74adac055ece15482857f3666 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -98,6 +98,15 @@ void start_thread(struct pt_regs *regs, unsigned long pc, } regs->epc = pc; regs->sp = sp; + +#ifdef CONFIG_64BIT + regs->status &= ~SR_UXL; + + if (is_compat_task()) + regs->status |= SR_UXL_32; + else + regs->status |= SR_UXL_64; +#endif } void flush_thread(void)