Commit 61ce1efe6e40233663d27ab8ac9ba9710eebcaad

Authored by Andrew Morton
Committed by Linus Torvalds
1 parent e803915000

[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: Andrew Morton <akpm@osdl.org>
[ Added AVR32 as well ]
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

Showing 22 changed files with 31 additions and 147 deletions Side-by-side Diff

arch/alpha/kernel/vmlinux.lds.S
... ... @@ -48,13 +48,7 @@
48 48 . = ALIGN(8);
49 49 __initcall_start = .;
50 50 .initcall.init : {
51   - *(.initcall1.init)
52   - *(.initcall2.init)
53   - *(.initcall3.init)
54   - *(.initcall4.init)
55   - *(.initcall5.init)
56   - *(.initcall6.init)
57   - *(.initcall7.init)
  51 + INITCALLS
58 52 }
59 53 __initcall_end = .;
60 54  
arch/arm/kernel/vmlinux.lds.S
... ... @@ -45,13 +45,7 @@
45 45 *(.early_param.init)
46 46 __early_end = .;
47 47 __initcall_start = .;
48   - *(.initcall1.init)
49   - *(.initcall2.init)
50   - *(.initcall3.init)
51   - *(.initcall4.init)
52   - *(.initcall5.init)
53   - *(.initcall6.init)
54   - *(.initcall7.init)
  48 + INITCALLS
55 49 __initcall_end = .;
56 50 __con_initcall_start = .;
57 51 *(.con_initcall.init)
arch/avr32/kernel/vmlinux.lds.c
... ... @@ -38,13 +38,7 @@
38 38 __setup_end = .;
39 39 . = ALIGN(4);
40 40 __initcall_start = .;
41   - *(.initcall1.init)
42   - *(.initcall2.init)
43   - *(.initcall3.init)
44   - *(.initcall4.init)
45   - *(.initcall5.init)
46   - *(.initcall6.init)
47   - *(.initcall7.init)
  41 + INITCALLS
48 42 __initcall_end = .;
49 43 __con_initcall_start = .;
50 44 *(.con_initcall.init)
arch/frv/kernel/vmlinux.lds.S
... ... @@ -44,13 +44,7 @@
44 44  
45 45 __initcall_start = .;
46 46 .initcall.init : {
47   - *(.initcall1.init)
48   - *(.initcall2.init)
49   - *(.initcall3.init)
50   - *(.initcall4.init)
51   - *(.initcall5.init)
52   - *(.initcall6.init)
53   - *(.initcall7.init)
  47 + INITCALLS
54 48 }
55 49 __initcall_end = .;
56 50 __con_initcall_start = .;
arch/h8300/kernel/vmlinux.lds.S
... ... @@ -118,13 +118,7 @@
118 118 . = ALIGN(0x4) ;
119 119 ___setup_end = .;
120 120 ___initcall_start = .;
121   - *(.initcall1.init)
122   - *(.initcall2.init)
123   - *(.initcall3.init)
124   - *(.initcall4.init)
125   - *(.initcall5.init)
126   - *(.initcall6.init)
127   - *(.initcall7.init)
  121 + INITCALLS
128 122 ___initcall_end = .;
129 123 ___con_initcall_start = .;
130 124 *(.con_initcall.init)
arch/i386/kernel/vmlinux.lds.S
... ... @@ -126,13 +126,7 @@
126 126 __setup_end = .;
127 127 __initcall_start = .;
128 128 .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
129   - *(.initcall1.init)
130   - *(.initcall2.init)
131   - *(.initcall3.init)
132   - *(.initcall4.init)
133   - *(.initcall5.init)
134   - *(.initcall6.init)
135   - *(.initcall7.init)
  129 + INITCALLS
136 130 }
137 131 __initcall_end = .;
138 132 __con_initcall_start = .;
arch/ia64/kernel/vmlinux.lds.S
... ... @@ -128,13 +128,7 @@
128 128 .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET)
129 129 {
130 130 __initcall_start = .;
131   - *(.initcall1.init)
132   - *(.initcall2.init)
133   - *(.initcall3.init)
134   - *(.initcall4.init)
135   - *(.initcall5.init)
136   - *(.initcall6.init)
137   - *(.initcall7.init)
  131 + INITCALLS
138 132 __initcall_end = .;
139 133 }
140 134  
arch/m32r/kernel/vmlinux.lds.S
... ... @@ -83,13 +83,7 @@
83 83 __setup_end = .;
84 84 __initcall_start = .;
85 85 .initcall.init : {
86   - *(.initcall1.init)
87   - *(.initcall2.init)
88   - *(.initcall3.init)
89   - *(.initcall4.init)
90   - *(.initcall5.init)
91   - *(.initcall6.init)
92   - *(.initcall7.init)
  86 + INITCALLS
93 87 }
94 88 __initcall_end = .;
95 89 __con_initcall_start = .;
arch/m68knommu/kernel/vmlinux.lds.S
... ... @@ -140,13 +140,7 @@
140 140 *(.init.setup)
141 141 __setup_end = .;
142 142 __initcall_start = .;
143   - *(.initcall1.init)
144   - *(.initcall2.init)
145   - *(.initcall3.init)
146   - *(.initcall4.init)
147   - *(.initcall5.init)
148   - *(.initcall6.init)
149   - *(.initcall7.init)
  143 + INITCALLS
150 144 __initcall_end = .;
151 145 __con_initcall_start = .;
152 146 *(.con_initcall.init)
arch/mips/kernel/vmlinux.lds.S
... ... @@ -91,13 +91,7 @@
91 91  
92 92 __initcall_start = .;
93 93 .initcall.init : {
94   - *(.initcall1.init)
95   - *(.initcall2.init)
96   - *(.initcall3.init)
97   - *(.initcall4.init)
98   - *(.initcall5.init)
99   - *(.initcall6.init)
100   - *(.initcall7.init)
  94 + INITCALLS
101 95 }
102 96 __initcall_end = .;
103 97  
arch/parisc/kernel/vmlinux.lds.S
... ... @@ -153,13 +153,7 @@
153 153 __setup_end = .;
154 154 __initcall_start = .;
155 155 .initcall.init : {
156   - *(.initcall1.init)
157   - *(.initcall2.init)
158   - *(.initcall3.init)
159   - *(.initcall4.init)
160   - *(.initcall5.init)
161   - *(.initcall6.init)
162   - *(.initcall7.init)
  156 + INITCALLS
163 157 }
164 158 __initcall_end = .;
165 159 __con_initcall_start = .;
arch/powerpc/kernel/vmlinux.lds.S
... ... @@ -108,13 +108,7 @@
108 108  
109 109 .initcall.init : {
110 110 __initcall_start = .;
111   - *(.initcall1.init)
112   - *(.initcall2.init)
113   - *(.initcall3.init)
114   - *(.initcall4.init)
115   - *(.initcall5.init)
116   - *(.initcall6.init)
117   - *(.initcall7.init)
  111 + INITCALLS
118 112 __initcall_end = .;
119 113 }
120 114  
arch/ppc/kernel/vmlinux.lds.S
... ... @@ -115,13 +115,7 @@
115 115 __setup_end = .;
116 116 __initcall_start = .;
117 117 .initcall.init : {
118   - *(.initcall1.init)
119   - *(.initcall2.init)
120   - *(.initcall3.init)
121   - *(.initcall4.init)
122   - *(.initcall5.init)
123   - *(.initcall6.init)
124   - *(.initcall7.init)
  118 + INITCALLS
125 119 }
126 120 __initcall_end = .;
127 121  
arch/s390/kernel/vmlinux.lds.S
... ... @@ -83,13 +83,7 @@
83 83 __setup_end = .;
84 84 __initcall_start = .;
85 85 .initcall.init : {
86   - *(.initcall1.init)
87   - *(.initcall2.init)
88   - *(.initcall3.init)
89   - *(.initcall4.init)
90   - *(.initcall5.init)
91   - *(.initcall6.init)
92   - *(.initcall7.init)
  86 + INITCALLS
93 87 }
94 88 __initcall_end = .;
95 89 __con_initcall_start = .;
arch/sh/kernel/vmlinux.lds.S
... ... @@ -76,13 +76,7 @@
76 76 __setup_end = .;
77 77 __initcall_start = .;
78 78 .initcall.init : {
79   - *(.initcall1.init)
80   - *(.initcall2.init)
81   - *(.initcall3.init)
82   - *(.initcall4.init)
83   - *(.initcall5.init)
84   - *(.initcall6.init)
85   - *(.initcall7.init)
  79 + INITCALLS
86 80 }
87 81 __initcall_end = .;
88 82 __con_initcall_start = .;
arch/sh64/kernel/vmlinux.lds.S
... ... @@ -108,13 +108,7 @@
108 108 __setup_end = .;
109 109 __initcall_start = .;
110 110 .initcall.init : C_PHYS(.initcall.init) {
111   - *(.initcall1.init)
112   - *(.initcall2.init)
113   - *(.initcall3.init)
114   - *(.initcall4.init)
115   - *(.initcall5.init)
116   - *(.initcall6.init)
117   - *(.initcall7.init)
  111 + INITCALLS
118 112 }
119 113 __initcall_end = .;
120 114 __con_initcall_start = .;
arch/sparc/kernel/vmlinux.lds.S
... ... @@ -49,13 +49,7 @@
49 49 __setup_end = .;
50 50 __initcall_start = .;
51 51 .initcall.init : {
52   - *(.initcall1.init)
53   - *(.initcall2.init)
54   - *(.initcall3.init)
55   - *(.initcall4.init)
56   - *(.initcall5.init)
57   - *(.initcall6.init)
58   - *(.initcall7.init)
  52 + INITCALLS
59 53 }
60 54 __initcall_end = .;
61 55 __con_initcall_start = .;
arch/sparc64/kernel/vmlinux.lds.S
... ... @@ -57,13 +57,7 @@
57 57 __setup_end = .;
58 58 __initcall_start = .;
59 59 .initcall.init : {
60   - *(.initcall1.init)
61   - *(.initcall2.init)
62   - *(.initcall3.init)
63   - *(.initcall4.init)
64   - *(.initcall5.init)
65   - *(.initcall6.init)
66   - *(.initcall7.init)
  60 + INITCALLS
67 61 }
68 62 __initcall_end = .;
69 63 __con_initcall_start = .;
arch/v850/kernel/vmlinux.lds.S
... ... @@ -140,13 +140,7 @@
140 140 ___setup_end = . ; \
141 141 ___initcall_start = . ; \
142 142 *(.initcall.init) \
143   - *(.initcall1.init) \
144   - *(.initcall2.init) \
145   - *(.initcall3.init) \
146   - *(.initcall4.init) \
147   - *(.initcall5.init) \
148   - *(.initcall6.init) \
149   - *(.initcall7.init) \
  143 + INITCALLS \
150 144 . = ALIGN (4) ; \
151 145 ___initcall_end = . ; \
152 146 ___con_initcall_start = .; \
arch/x86_64/kernel/vmlinux.lds.S
... ... @@ -175,13 +175,7 @@
175 175 __setup_end = .;
176 176 __initcall_start = .;
177 177 .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
178   - *(.initcall1.init)
179   - *(.initcall2.init)
180   - *(.initcall3.init)
181   - *(.initcall4.init)
182   - *(.initcall5.init)
183   - *(.initcall6.init)
184   - *(.initcall7.init)
  178 + INITCALLS
185 179 }
186 180 __initcall_end = .;
187 181 __con_initcall_start = .;
arch/xtensa/kernel/vmlinux.lds.S
... ... @@ -184,13 +184,7 @@
184 184  
185 185 __initcall_start = .;
186 186 .initcall.init : {
187   - *(.initcall1.init)
188   - *(.initcall2.init)
189   - *(.initcall3.init)
190   - *(.initcall4.init)
191   - *(.initcall5.init)
192   - *(.initcall6.init)
193   - *(.initcall7.init)
  187 + INITCALLS
194 188 }
195 189 __initcall_end = .;
196 190  
include/asm-generic/vmlinux.lds.h
... ... @@ -213,4 +213,13 @@
213 213  
214 214 #define NOTES \
215 215 .notes : { *(.note.*) } :note
  216 +
  217 +#define INITCALLS \
  218 + *(.initcall1.init) \
  219 + *(.initcall2.init) \
  220 + *(.initcall3.init) \
  221 + *(.initcall4.init) \
  222 + *(.initcall5.init) \
  223 + *(.initcall6.init) \
  224 + *(.initcall7.init)