[PATCH] RISC-V: Inform checksyscalls.sh about the rv32 ABI

Palmer Dabbelt palmerdabbelt at google.com
Sat Oct 2 17:55:22 PDT 2021


On Mon, 06 Sep 2021 15:57:32 PDT (-0700), Arnd Bergmann wrote:
> On Mon, Sep 6, 2021 at 8:52 PM Palmer Dabbelt <palmerdabbelt at google.com> wrote:
>>
>> I remember having seen some build output from this before, but didn't
>> know what it meant.  These are now showing up as errors.
>>
>> As far as I understand our 32-bit syscall ABI is fine, the issue here is
>> simply that we don't need the syscalls in question because we never had
>> the legacy versions to begin with.  One could imagine describing these
>> constraints in an arch-generic way, but I'm not sure it's worth
>> bothering until another arch comes along that behaves this way.
>>
>> Fixes: d4c08b9776b3 ("riscv: Use latest system call ABI")
>> Signed-off-by: Palmer Dabbelt <palmerdabbelt at google.com>
>> ---
>>  arch/riscv/include/asm/unistd.h | 14 ++++++++++++++
>>  1 file changed, 14 insertions(+)
>>
>> diff --git a/arch/riscv/include/asm/unistd.h b/arch/riscv/include/asm/unistd.h
>> index 6c316093a1e5..cbc2646b4662 100644
>> --- a/arch/riscv/include/asm/unistd.h
>> +++ b/arch/riscv/include/asm/unistd.h
>> @@ -14,3 +14,17 @@
>>  #include <uapi/asm/unistd.h>
>>
>>  #define NR_syscalls (__NR_syscalls)
>> +
>> +#if __BITS_PER_LONG == 32
>> +/*
>> + * RISC-V never had the 32-bit off/len syscall flavors, which means we don't
>> + * need the the explicit off64/len64 versions.
>> + */
>> +#define __IGNORE_fstat64
>> +#define __IGNORE_fstatat64
>
> These should be in the checksyscalls.pl script: new architectures can all just
> use statx() here. This has nothing to do with 32-bit off/len though, only
> with time64.

OK, I've sent a patch to add it over there.

>
>> +/*
>> + * RISC-V never had the 32-bit time_t syscall flavors, which means we don't
>> + * need the explicit 64-bit versions.
>> + */
>> +#define __IGNORE_clone3
>> +#endif
>
> clone3 should be implemented, IIRC it's only missing because there is no
> easy way to do an architecture-independent version.

Not sure what I was thinking when I wrote that one.  Luckily there's an 
easy __ARCH_WANT_SYS_CLONE3 now, so we can just use that.  I'm not sure 
why it never ended up in rv32, maybe because we were only testing rv64 
at the time.

I sent a patch for this too.



More information about the linux-riscv mailing list