From: Andrew Cooper Date: Mon, 22 Feb 2016 16:19:52 +0000 (+0100) Subject: introduce IS_ALIGNED() X-Git-Tag: colo-prep-v8-base~42 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=f5488b79614eaf408543a510a8bf9c4a81bf48ff;p=people%2Fliuw%2Fxen.git introduce IS_ALIGNED() And a few open-coded alignment checks which I encountered Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index ea3f9f2353..d6aaed81ad 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -5957,8 +5957,8 @@ void destroy_xen_mappings(unsigned long s, unsigned long e) unsigned int i; unsigned long v = s; - ASSERT((s & ~PAGE_MASK) == 0); - ASSERT((e & ~PAGE_MASK) == 0); + ASSERT(IS_ALIGNED(s, PAGE_SIZE)); + ASSERT(IS_ALIGNED(e, PAGE_SIZE)); while ( v < e ) { @@ -6369,8 +6369,8 @@ static void __memguard_change_range(void *p, unsigned long l, int guard) unsigned int flags = __PAGE_HYPERVISOR_RW | MAP_SMALL_PAGES; /* Ensure we are dealing with a page-aligned whole number of pages. */ - ASSERT((_p&~PAGE_MASK) == 0); - ASSERT((_l&~PAGE_MASK) == 0); + ASSERT(IS_ALIGNED(_p, PAGE_SIZE)); + ASSERT(IS_ALIGNED(_l, PAGE_SIZE)); if ( guard ) flags &= ~_PAGE_PRESENT; diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 10007a3458..0c9aefa3b3 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -230,4 +230,4 @@ ASSERT(__image_base__ > XEN_VIRT_START || ASSERT(kexec_reloc_size - kexec_reloc <= PAGE_SIZE, "kexec_reloc is too large") #endif -ASSERT((cpu0_stack & (STACK_SIZE - 1)) == 0, "cpu0_stack misaligned") +ASSERT(IS_ALIGNED(cpu0_stack, STACK_SIZE), "cpu0_stack misaligned") diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h index a992933035..bd78176ea1 100644 --- a/xen/include/xen/config.h +++ b/xen/include/xen/config.h @@ -74,6 +74,8 @@ #define MB(_mb) (_AC(_mb, ULL) << 20) #define GB(_gb) (_AC(_gb, ULL) << 30) +#define IS_ALIGNED(val, align) (((val) & ((align) - 1)) == 0) + #define __STR(...) #__VA_ARGS__ #define STR(...) __STR(__VA_ARGS__) diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h index 0fdbf688de..c770f3e4d5 100644 --- a/xen/include/xen/tmem_xen.h +++ b/xen/include/xen/tmem_xen.h @@ -23,8 +23,7 @@ #endif typedef uint32_t pagesize_t; /* like size_t, must handle largest PAGE_SIZE */ -#define IS_PAGE_ALIGNED(addr) \ - ((void *)((((unsigned long)addr + (PAGE_SIZE - 1)) & PAGE_MASK)) == addr) +#define IS_PAGE_ALIGNED(addr) IS_ALIGNED((unsigned long)(addr), PAGE_SIZE) #define IS_VALID_PAGE(_pi) ( mfn_valid(page_to_mfn(_pi)) ) extern struct page_list_head tmem_page_list;