提交 61ce1efe 编写于 作者: A Andrew Morton 提交者: Linus Torvalds

[PATCH] vmlinux.lds: consolidate initcall sections

Add a vmlinux.lds.h helper macro for defining the eight-level initcall table,
teach all the architectures to use it.

This is a prerequisite for a patch which performs initcall synchronisation for
multithreaded-probing.

Cc: Greg KH <greg@kroah.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
[ Added AVR32 as well ]
Signed-off-by: NHaavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 e8039150
...@@ -48,13 +48,7 @@ SECTIONS ...@@ -48,13 +48,7 @@ SECTIONS
. = ALIGN(8); . = ALIGN(8);
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
......
...@@ -45,13 +45,7 @@ SECTIONS ...@@ -45,13 +45,7 @@ SECTIONS
*(.early_param.init) *(.early_param.init)
__early_end = .; __early_end = .;
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
......
...@@ -38,13 +38,7 @@ SECTIONS ...@@ -38,13 +38,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
. = ALIGN(4); . = ALIGN(4);
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
......
...@@ -44,13 +44,7 @@ SECTIONS ...@@ -44,13 +44,7 @@ SECTIONS
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -118,13 +118,7 @@ SECTIONS ...@@ -118,13 +118,7 @@ SECTIONS
. = ALIGN(0x4) ; . = ALIGN(0x4) ;
___setup_end = .; ___setup_end = .;
___initcall_start = .; ___initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
___initcall_end = .; ___initcall_end = .;
___con_initcall_start = .; ___con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
......
...@@ -126,13 +126,7 @@ SECTIONS ...@@ -126,13 +126,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -128,13 +128,7 @@ SECTIONS ...@@ -128,13 +128,7 @@ SECTIONS
.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET)
{ {
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .; __initcall_end = .;
} }
......
...@@ -83,13 +83,7 @@ SECTIONS ...@@ -83,13 +83,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -140,13 +140,7 @@ SECTIONS { ...@@ -140,13 +140,7 @@ SECTIONS {
*(.init.setup) *(.init.setup)
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
......
...@@ -91,13 +91,7 @@ SECTIONS ...@@ -91,13 +91,7 @@ SECTIONS
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
......
...@@ -153,13 +153,7 @@ SECTIONS ...@@ -153,13 +153,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -108,13 +108,7 @@ SECTIONS ...@@ -108,13 +108,7 @@ SECTIONS
.initcall.init : { .initcall.init : {
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .; __initcall_end = .;
} }
......
...@@ -115,13 +115,7 @@ SECTIONS ...@@ -115,13 +115,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
......
...@@ -83,13 +83,7 @@ SECTIONS ...@@ -83,13 +83,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -76,13 +76,7 @@ SECTIONS ...@@ -76,13 +76,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -108,13 +108,7 @@ SECTIONS ...@@ -108,13 +108,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : C_PHYS(.initcall.init) { .initcall.init : C_PHYS(.initcall.init) {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -49,13 +49,7 @@ SECTIONS ...@@ -49,13 +49,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -57,13 +57,7 @@ SECTIONS ...@@ -57,13 +57,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -140,13 +140,7 @@ ...@@ -140,13 +140,7 @@
___setup_end = . ; \ ___setup_end = . ; \
___initcall_start = . ; \ ___initcall_start = . ; \
*(.initcall.init) \ *(.initcall.init) \
*(.initcall1.init) \ INITCALLS \
*(.initcall2.init) \
*(.initcall3.init) \
*(.initcall4.init) \
*(.initcall5.init) \
*(.initcall6.init) \
*(.initcall7.init) \
. = ALIGN (4) ; \ . = ALIGN (4) ; \
___initcall_end = . ; \ ___initcall_end = . ; \
___con_initcall_start = .; \ ___con_initcall_start = .; \
......
...@@ -175,13 +175,7 @@ SECTIONS ...@@ -175,13 +175,7 @@ SECTIONS
__setup_end = .; __setup_end = .;
__initcall_start = .; __initcall_start = .;
.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
__con_initcall_start = .; __con_initcall_start = .;
......
...@@ -184,13 +184,7 @@ SECTIONS ...@@ -184,13 +184,7 @@ SECTIONS
__initcall_start = .; __initcall_start = .;
.initcall.init : { .initcall.init : {
*(.initcall1.init) INITCALLS
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
} }
__initcall_end = .; __initcall_end = .;
......
...@@ -213,3 +213,13 @@ ...@@ -213,3 +213,13 @@
#define NOTES \ #define NOTES \
.notes : { *(.note.*) } :note .notes : { *(.note.*) } :note
#define INITCALLS \
*(.initcall1.init) \
*(.initcall2.init) \
*(.initcall3.init) \
*(.initcall4.init) \
*(.initcall5.init) \
*(.initcall6.init) \
*(.initcall7.init)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册