lkml.org 
[lkml]   [2022]   [Mar]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH V7 13/20] riscv: compat: process: Add UXL_32 support in start_thread
From
On 11/03/2022 02:38, Guo Ren wrote:
> 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].

would an if (IS_ENABLED(CONFIG_COMPAT)) { } around the lot be better
than an #ifdef here?

>> }
>>
>> void flush_thread(void)
>> --
>> 2.25.1
>>
>
>


--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius

https://www.codethink.co.uk/privacy.html

\
 
 \ /
  Last update: 2022-03-11 14:39    [W:0.050 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site