Message ID | 20221219154119.087799661@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Introduce cmpxchg128() -- aka. the demise of cmpxchg_double() | expand |
Hi! > Introduce [us]128 (when available). Unlike [us]64, ensure they are > always naturally aligned. > > This also enables 128bit wide atomics (which require natural > alignment) such as cmpxchg128(). > > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> > --- > include/linux/types.h | 5 +++++ > include/uapi/linux/types.h | 4 ++++ > 2 files changed, 9 insertions(+) > > --- a/include/linux/types.h > +++ b/include/linux/types.h > @@ -10,6 +10,11 @@ > #define DECLARE_BITMAP(name,bits) \ > unsigned long name[BITS_TO_LONGS(bits)] > > +#ifdef __SIZEOF_INT128__ > +typedef __s128 s128; > +typedef __u128 u128; > +#endif Should this come as a note here? > Introduce [us]128 (when available). Unlike [us]64, ensure they are > always naturally aligned. BR, Pavel
--- a/include/linux/types.h +++ b/include/linux/types.h @@ -10,6 +10,11 @@ #define DECLARE_BITMAP(name,bits) \ unsigned long name[BITS_TO_LONGS(bits)] +#ifdef __SIZEOF_INT128__ +typedef __s128 s128; +typedef __u128 u128; +#endif + typedef u32 __kernel_dev_t; typedef __kernel_fd_set fd_set; --- a/include/uapi/linux/types.h +++ b/include/uapi/linux/types.h @@ -13,6 +13,10 @@ #include <linux/posix_types.h> +#ifdef __SIZEOF_INT128__ +typedef __signed__ __int128 __s128 __attribute__((aligned(16))); +typedef unsigned __int128 __u128 __attribute__((aligned(16))); +#endif /* * Below are truly Linux-specific types that should never collide with
Introduce [us]128 (when available). Unlike [us]64, ensure they are always naturally aligned. This also enables 128bit wide atomics (which require natural alignment) such as cmpxchg128(). Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> --- include/linux/types.h | 5 +++++ include/uapi/linux/types.h | 4 ++++ 2 files changed, 9 insertions(+)