[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86: force suitable alignment in sources rather than in linker script
commit 01fe4da6243be692b972de4ec7b22ec92527c0f5 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Mon Aug 15 10:41:48 2016 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Aug 15 10:41:48 2016 +0200 x86: force suitable alignment in sources rather than in linker script Besides being more logical this also allows verifying correct recording of alignments in .o files. The cpu0_stack related ASSERT() in xen.lds.S is now of questionable value (as it now verifies correct tool chain behavior), but I've left it in nevertheless. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/hvm/hvm.c | 2 +- xen/arch/x86/mm.c | 6 ++++-- xen/arch/x86/setup.c | 3 ++- xen/arch/x86/xen.lds.S | 3 --- xen/include/xen/compiler.h | 2 ++ 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index 893eff6..0180f26 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -88,7 +88,7 @@ struct hvm_function_table hvm_funcs __read_mostly; * the hardware domain which needs a more permissive one. */ #define HVM_IOBITMAP_SIZE (3 * PAGE_SIZE) -unsigned long __section(".bss.page_aligned") +unsigned long __section(".bss.page_aligned") __aligned(PAGE_SIZE) hvm_io_bitmap[HVM_IOBITMAP_SIZE / BYTES_PER_LONG]; /* Xen command-line option to enable HAP */ diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 109b8be..ff8e904 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -125,7 +125,8 @@ #include <asm/pci.h> /* Mapping of the fixmap space needed early. */ -l1_pgentry_t __section(".bss.page_aligned") l1_fixmap[L1_PAGETABLE_ENTRIES]; +l1_pgentry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE) + l1_fixmap[L1_PAGETABLE_ENTRIES]; #define MEM_LOG(_f, _a...) gdprintk(XENLOG_WARNING , _f "\n" , ## _a) @@ -588,7 +589,8 @@ static inline void guest_get_eff_kern_l1e(struct vcpu *v, unsigned long addr, TOGGLE_MODE(); } -const char __section(".bss.page_aligned.const") zero_page[PAGE_SIZE]; +const char __section(".bss.page_aligned.const") __aligned(PAGE_SIZE) + zero_page[PAGE_SIZE]; static void invalidate_shadow_ldt(struct vcpu *v, int flush) { diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 217c775..8ae897a 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -105,7 +105,8 @@ unsigned long __read_mostly xen_virt_end; DEFINE_PER_CPU(struct tss_struct, init_tss); -char __section(".bss.stack_aligned") cpu0_stack[STACK_SIZE]; +char __section(".bss.stack_aligned") __aligned(STACK_SIZE) + cpu0_stack[STACK_SIZE]; struct cpuinfo_x86 __read_mostly boot_cpu_data = { 0, 0, 0, 0, -1 }; diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 0970299..2d1d43d 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -222,7 +222,6 @@ SECTIONS } :text .data : { /* Data */ - . = ALIGN(PAGE_SIZE); *(.data.page_aligned) *(.data) *(.data.rel) @@ -231,10 +230,8 @@ SECTIONS } :text .bss : { /* BSS */ - . = ALIGN(STACK_SIZE); __bss_start = .; *(.bss.stack_aligned) - . = ALIGN(PAGE_SIZE); *(.bss.page_aligned*) *(.bss) . = ALIGN(SMP_CACHE_BYTES); diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h index f3e8d95..33f0b96 100644 --- a/xen/include/xen/compiler.h +++ b/xen/include/xen/compiler.h @@ -34,6 +34,8 @@ #define __used_section(s) __used __attribute__((__section__(s))) #define __text_section(s) __attribute__((__section__(s))) +#define __aligned(a) __attribute__((__aligned__(a))) + #ifdef INIT_SECTIONS_ONLY /* * For sources indicated to have only init code, make sure even -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |