From: Andrew Cooper Date: Tue, 21 Jun 2016 16:38:25 +0000 (+0100) Subject: xen/init: Move initcall infrastructure into .init.data X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~874 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=544ad7f5caf5;p=xen.git xen/init: Move initcall infrastructure into .init.data Its contents is constant. The ALIGN(32) is also dropped. On x86, there is nothing between it and a larger alignment. On ARM, __init_end_efi is between the two, but its sole use is to fill SizeOfRawData in the PE Section Table, and doesn't require any specific alignment. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Acked-by: Julien Grall --- diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S index b00ee81cd8..b18c9c2cf7 100644 --- a/xen/arch/arm/xen.lds.S +++ b/xen/arch/arm/xen.lds.S @@ -145,6 +145,12 @@ SECTIONS *(.init.proc.info) __proc_info_end = .; + __initcall_start = .; + *(.initcallpresmp.init) + __presmp_initcall_end = .; + *(.initcall1.init) + __initcall_end = .; + *(.init.data) *(.init.data.rel) *(.init.data.rel.*) @@ -154,14 +160,6 @@ SECTIONS *(.init_array) __ctors_end = .; } :text - . = ALIGN(32); - .initcall.init : { - __initcall_start = .; - *(.initcallpresmp.init) - __presmp_initcall_end = .; - *(.initcall1.init) - __initcall_end = .; - } :text __init_end_efi = .; . = ALIGN(STACK_SIZE); __init_end = .; diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S index 2443b931f0..a1678d8328 100644 --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -158,6 +158,12 @@ SECTIONS *(.init.setup) __setup_end = .; + __initcall_start = .; + *(.initcallpresmp.init) + __presmp_initcall_end = .; + *(.initcall1.init) + __initcall_end = .; + *(.init.data) *(.init.data.rel) *(.init.data.rel.*) @@ -183,14 +189,6 @@ SECTIONS *(.ctors) __ctors_end = .; } :text - . = ALIGN(32); - .initcall.init : { - __initcall_start = .; - *(.initcallpresmp.init) - __presmp_initcall_end = .; - *(.initcall1.init) - __initcall_end = .; - } :text . = ALIGN(PAGE_SIZE); __init_end = .; diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h index b04bcf98c1..0afc43034a 100644 --- a/xen/include/xen/init.h +++ b/xen/include/xen/init.h @@ -61,9 +61,9 @@ typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); #define presmp_initcall(fn) \ - static initcall_t __initcall_##fn __init_call("presmp") = fn + const static initcall_t __initcall_##fn __init_call("presmp") = fn #define __initcall(fn) \ - static initcall_t __initcall_##fn __init_call("1") = fn + const static initcall_t __initcall_##fn __init_call("1") = fn #define __exitcall(fn) \ static exitcall_t __exitcall_##fn __exit_call = fn