diff options
| author | Andi Kleen <ak@linux.intel.com> | 2012-10-04 17:11:27 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-06 03:04:37 +0900 | 
| commit | 754b7b63d112ecc771e376388dcefd7b79bf5c4b (patch) | |
| tree | 93e651411471d86213fa94526546551f38afccca /include/linux/init.h | |
| parent | 0f6d93aa9d96cc9022b51bd10d462b03296be146 (diff) | |
| download | olio-linux-3.10-754b7b63d112ecc771e376388dcefd7b79bf5c4b.tar.xz olio-linux-3.10-754b7b63d112ecc771e376388dcefd7b79bf5c4b.zip  | |
sections: disable const sections for PA-RISC v2
The PA-RISC tool chain seems to have some problem with correct
read/write attributes on sections.  This causes problems when the const
sections are fixed up for other architecture to only contain truly
read-only data.
Disable const sections for PA-RISC
This can cause a bit of noise with modpost.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/init.h')
| -rw-r--r-- | include/linux/init.h | 27 | 
1 files changed, 19 insertions, 8 deletions
diff --git a/include/linux/init.h b/include/linux/init.h index 5e664f67161..e59041e21df 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -43,11 +43,22 @@     discard it in modules) */  #define __init		__section(.init.text) __cold notrace  #define __initdata	__section(.init.data) -#define __initconst	__section(.init.rodata) +#define __initconst	__constsection(.init.rodata)  #define __exitdata	__section(.exit.data)  #define __exit_call	__used __section(.exitcall.exit)  /* + * Some architecture have tool chains which do not handle rodata attributes + * correctly. For those disable special sections for const, so that other + * architectures can annotate correctly. + */ +#ifdef CONFIG_BROKEN_RODATA +#define __constsection(x) +#else +#define __constsection(x) __section(x) +#endif + +/*   * modpost check for section mismatches during the kernel build.   * A section mismatch happens when there are references from a   * code or data section to an init section (both code or data). @@ -66,7 +77,7 @@   */  #define __ref            __section(.ref.text) noinline  #define __refdata        __section(.ref.data) -#define __refconst       __section(.ref.rodata) +#define __refconst       __constsection(.ref.rodata)  /* compatibility defines */  #define __init_refok     __ref @@ -85,26 +96,26 @@  /* Used for HOTPLUG */  #define __devinit        __section(.devinit.text) __cold notrace  #define __devinitdata    __section(.devinit.data) -#define __devinitconst   __section(.devinit.rodata) +#define __devinitconst   __constsection(.devinit.rodata)  #define __devexit        __section(.devexit.text) __exitused __cold notrace  #define __devexitdata    __section(.devexit.data) -#define __devexitconst   __section(.devexit.rodata) +#define __devexitconst   __constsection(.devexit.rodata)  /* Used for HOTPLUG_CPU */  #define __cpuinit        __section(.cpuinit.text) __cold notrace  #define __cpuinitdata    __section(.cpuinit.data) -#define __cpuinitconst   __section(.cpuinit.rodata) +#define __cpuinitconst   __constsection(.cpuinit.rodata)  #define __cpuexit        __section(.cpuexit.text) __exitused __cold notrace  #define __cpuexitdata    __section(.cpuexit.data) -#define __cpuexitconst   __section(.cpuexit.rodata) +#define __cpuexitconst   __constsection(.cpuexit.rodata)  /* Used for MEMORY_HOTPLUG */  #define __meminit        __section(.meminit.text) __cold notrace  #define __meminitdata    __section(.meminit.data) -#define __meminitconst   __section(.meminit.rodata) +#define __meminitconst   __constsection(.meminit.rodata)  #define __memexit        __section(.memexit.text) __exitused __cold notrace  #define __memexitdata    __section(.memexit.data) -#define __memexitconst   __section(.memexit.rodata) +#define __memexitconst   __constsection(.memexit.rodata)  /* For assembly routines */  #define __HEAD		.section	".head.text","ax"  |