Message ID | 20220916053300.786330-10-rmclure@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | powerpc: Syscall wrapper and register clearing | expand |
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@linux.ibm.com> Better put Arnd and linux-arch on cc... Reviewed-by: Nicholas Piggin <npiggin@gmail.com> > --- > 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
On Fri, Sep 16, 2022, at 7:32 AM, 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@linux.ibm.com> > --- Reviewed-by: Arnd Bergmann <arnd@arndb.de>
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;
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@linux.ibm.com> --- V4 -> V5: New patch. --- include/asm-generic/compat.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)