On Fri Sep 16, 2022 at 3:32 PM AEST, Rohan McLure wrote: > 32-bit ABIs support passing 64-bit integers by registers via argument > translation. Commit 59c10c52f573 ("riscv: compat: syscall: Add > compat_sys_call_table implementation") implements the compat_arg_u64 > macro for efficiently defining little endian compatibility syscalls. > > Architectures supporting big endianness may benefit from reciprocal > argument translation, but are welcome also to implement their own. > > Signed-off-by: Rohan McLure <rmclure@xxxxxxxxxxxxx> Better put Arnd and linux-arch on cc... Reviewed-by: Nicholas Piggin <npiggin@xxxxxxxxx> > --- > V4 -> V5: New patch. > --- > include/asm-generic/compat.h | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/include/asm-generic/compat.h b/include/asm-generic/compat.h > index d06308a2a7a8..aeb257ad3d1a 100644 > --- a/include/asm-generic/compat.h > +++ b/include/asm-generic/compat.h > @@ -14,12 +14,17 @@ > #define COMPAT_OFF_T_MAX 0x7fffffff > #endif > > -#if !defined(compat_arg_u64) && !defined(CONFIG_CPU_BIG_ENDIAN) > +#ifndef compat_arg_u64 > +#ifdef CONFIG_CPU_BIG_ENDIAN > #define compat_arg_u64(name) u32 name##_lo, u32 name##_hi > #define compat_arg_u64_dual(name) u32, name##_lo, u32, name##_hi > +#else > +#define compat_arg_u64(name) u32 name##_hi, u32 name##_lo > +#define compat_arg_u64_dual(name) u32, name##_hi, u32, name##_lo > +#endif > #define compat_arg_u64_glue(name) (((u64)name##_lo & 0xffffffffUL) | \ > ((u64)name##_hi << 32)) > -#endif > +#endif /* compat_arg_u64 */ > > /* These types are common across all compat ABIs */ > typedef u32 compat_size_t; > -- > 2.34.1