There are macros in kernel.h that can be used outside of that header. Split them to args.h and replace open coded variants. Test compiled with `make allmodconfig` for x86_64. Test cross-compiled with `make multi_v7_defconfig` for arm. (Note that positive diff statistics is due to documentation being updated.) In v4: - fixed compilation error on arm (LKP, Stephen) In v3: - split to a series of patches - fixed build issue on `make allmodconfig` for x86_64 (Andrew) In v2: - converted existing users at the same time (Andrew, Rasmus) - documented how it does work (Andrew, Rasmus) Andy Shevchenko (4): kernel.h: Split out COUNT_ARGS() and CONCATENATE() to args.h x86/asm: Replace custom COUNT_ARGS() & CONCATENATE() implementations arm64: smccc: Replace custom COUNT_ARGS() & CONCATENATE() implementations genetlink: Replace custom CONCATENATE() implementation arch/x86/include/asm/rmwcc.h | 11 ++--- include/kunit/test.h | 1 + include/linux/args.h | 28 +++++++++++++ include/linux/arm-smccc.h | 69 ++++++++++++++----------------- include/linux/genl_magic_func.h | 27 ++++++------ include/linux/genl_magic_struct.h | 8 ++-- include/linux/kernel.h | 7 ---- include/linux/pci.h | 2 +- include/trace/bpf_probe.h | 2 + 9 files changed, 84 insertions(+), 71 deletions(-) create mode 100644 include/linux/args.h -- 2.40.0.1.gaa8946217a0b