@@ -351,9 +351,9 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
~((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1) );
#define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned int))
-#define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
+#define CNT (LOWEST_POW2(sizeof(*frame_table)) / \
sizeof(*compat_machine_to_phys_mapping))
- BUILD_BUG_ON((sizeof(*frame_table) & -sizeof(*frame_table)) % \
+ BUILD_BUG_ON(LOWEST_POW2(sizeof(*frame_table)) % \
sizeof(*compat_machine_to_phys_mapping));
for ( i = smap; i < emap; i += (1UL << (L2_PAGETABLE_SHIFT - 2)) )
@@ -410,10 +410,10 @@ static int setup_m2p_table(struct mem_hotadd_info *info)
va = RO_MPT_VIRT_START + smap * sizeof(*machine_to_phys_mapping);
#define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned long))
-#define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
+#define CNT (LOWEST_POW2(sizeof(*frame_table)) / \
sizeof(*machine_to_phys_mapping))
- BUILD_BUG_ON((sizeof(*frame_table) & -sizeof(*frame_table)) % \
+ BUILD_BUG_ON(LOWEST_POW2(sizeof(*frame_table)) % \
sizeof(*machine_to_phys_mapping));
i = smap;
@@ -539,7 +539,7 @@ void __init paging_init(void)
mpt_size = (max_page * BYTES_PER_LONG) + (1UL << L2_PAGETABLE_SHIFT) - 1;
mpt_size &= ~((1UL << L2_PAGETABLE_SHIFT) - 1UL);
#define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned long))
-#define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
+#define CNT (LOWEST_POW2(sizeof(*frame_table)) / \
sizeof(*machine_to_phys_mapping))
BUILD_BUG_ON((sizeof(*frame_table) & ~sizeof(*frame_table)) % \
sizeof(*machine_to_phys_mapping));
@@ -666,7 +666,7 @@ void __init paging_init(void)
mpt_size = 0;
#define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned int))
-#define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
+#define CNT (LOWEST_POW2(sizeof(*frame_table)) / \
sizeof(*compat_machine_to_phys_mapping))
BUILD_BUG_ON((sizeof(*frame_table) & ~sizeof(*frame_table)) % \
sizeof(*compat_machine_to_phys_mapping));
The various definitions of macro CNT (and the related BUILD_BUG_ON) can be rewritten using LOWEST_POW2, encapsulating a violation of MISRA C:2012 Rule 10.1. Signed-off-by: Nicola Vetrini <nicola.vetrini@bugseng.com> --- I do find somewhat odd the multiple identical #define-s and #undef-s of CNT in this file, as well as the last BUILD_BUG_ON((sizeof(*frame_table) & ~sizeof(*frame_table)) [...] Perhaps here a cleanup is needed, to have a single definition of CNT and identical BUILD_BUG_ON-s (wrapped in a macro, even)? --- xen/arch/x86/x86_64/mm.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -- 2.34.1