Messages in this thread | | | From | Guo Ren <> | Date | Fri, 11 Mar 2022 10:38:09 +0800 | Subject | Re: [PATCH V7 13/20] riscv: compat: process: Add UXL_32 support in start_thread |
| |
Hi Arnd,
On Mon, Feb 28, 2022 at 12:30 AM <guoren@kernel.org> wrote: > > From: Guo Ren <guoren@linux.alibaba.com> > > 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@linux.alibaba.com> > Signed-off-by: Guo Ren <guoren@kernel.org> > Cc: Arnd Bergmann <arnd@arndb.de> > Cc: Palmer Dabbelt <palmer@dabbelt.com> > --- > 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/
| |