Message ID | 20250308-fixed-type-genmasks-v6-1-f59315e73c29@wanadoo.fr (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | bits: Fixed-type GENMASK_U*() and BIT_U*() | expand |
On Sat, Mar 08, 2025 at 01:48:48AM +0900, Vincent Mailhol via B4 Relay wrote: > From: Vincent Mailhol <mailhol.vincent@wanadoo.fr> > > In an upcoming change, GENMASK() and its friends will indirectly > depend on sizeof() which is not available in asm. > > Instead of adding further complexity to __GENMASK() to make it work > for both asm and non asm, just split the definition of the two > variants. ... > -/* > - * BUILD_BUG_ON_ZERO is not available in h files included from asm files, > - * disable the input check if that is the case. > - */ > +/* > + * BUILD_BUG_ON_ZERO() is not available in h files included from asm files, so > + * no input checks in assembly. > + */ In case of a new version I would reformat this as /* * BUILD_BUG_ON_ZERO() is not available in h files included from asm files, * so no input checks in assembly. */ It makes easier to review the changes and see that the first line is kept the same.
On 08/03/2025 at 02:42, Andy Shevchenko wrote: > On Sat, Mar 08, 2025 at 01:48:48AM +0900, Vincent Mailhol via B4 Relay wrote: >> From: Vincent Mailhol <mailhol.vincent@wanadoo.fr> >> >> In an upcoming change, GENMASK() and its friends will indirectly >> depend on sizeof() which is not available in asm. >> >> Instead of adding further complexity to __GENMASK() to make it work >> for both asm and non asm, just split the definition of the two >> variants. > > ... > >> -/* >> - * BUILD_BUG_ON_ZERO is not available in h files included from asm files, >> - * disable the input check if that is the case. >> - */ > >> +/* >> + * BUILD_BUG_ON_ZERO() is not available in h files included from asm files, so >> + * no input checks in assembly. >> + */ > > In case of a new version I would reformat this as > > /* > * BUILD_BUG_ON_ZERO() is not available in h files included from asm files, > * so no input checks in assembly. > */ > > It makes easier to review the changes and see that the first line is kept > the same. Not fully convinced, but why not. I staged this change locally, it will be in v7. Yours sincerely, Vincent Mailhol
diff --git a/include/linux/bits.h b/include/linux/bits.h index 14fd0ca9a6cd17339dd2f69e449558312a8a001b..9c1c7ce0bba6bb09490d891904c143a5394fd512 100644 --- a/include/linux/bits.h +++ b/include/linux/bits.h @@ -19,23 +19,17 @@ * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. */ #if !defined(__ASSEMBLY__) + #include <linux/build_bug.h> #include <linux/compiler.h> + #define GENMASK_INPUT_CHECK(h, l) BUILD_BUG_ON_ZERO(const_true((l) > (h))) -#else -/* - * BUILD_BUG_ON_ZERO is not available in h files included from asm files, - * disable the input check if that is the case. - */ -#define GENMASK_INPUT_CHECK(h, l) 0 -#endif #define GENMASK(h, l) \ (GENMASK_INPUT_CHECK(h, l) + __GENMASK(h, l)) #define GENMASK_ULL(h, l) \ (GENMASK_INPUT_CHECK(h, l) + __GENMASK_ULL(h, l)) -#if !defined(__ASSEMBLY__) /* * Missing asm support * @@ -48,6 +42,16 @@ */ #define GENMASK_U128(h, l) \ (GENMASK_INPUT_CHECK(h, l) + __GENMASK_U128(h, l)) -#endif + +#else /* defined(__ASSEMBLY__) */ + +/* + * BUILD_BUG_ON_ZERO() is not available in h files included from asm files, so + * no input checks in assembly. + */ +#define GENMASK(h, l) __GENMASK(h, l) +#define GENMASK_ULL(h, l) __GENMASK_ULL(h, l) + +#endif /* !defined(__ASSEMBLY__) */ #endif /* __LINUX_BITS_H */