Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Andrew Morton and committed by
Linus Torvalds
61ce1efe e8039150

+31 -147
+1 -7
arch/alpha/kernel/vmlinux.lds.S
··· 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
+1 -7
arch/arm/kernel/vmlinux.lds.S
··· 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)
+1 -7
arch/avr32/kernel/vmlinux.lds.c
··· 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)
+1 -7
arch/frv/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/h8300/kernel/vmlinux.lds.S
··· 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)
+1 -7
arch/i386/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/ia64/kernel/vmlinux.lds.S
··· 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
+1 -7
arch/m32r/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/m68knommu/kernel/vmlinux.lds.S
··· 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)
+1 -7
arch/mips/kernel/vmlinux.lds.S
··· 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
+1 -7
arch/parisc/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/powerpc/kernel/vmlinux.lds.S
··· 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
+1 -7
arch/ppc/kernel/vmlinux.lds.S
··· 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
+1 -7
arch/s390/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/sh/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/sh64/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/sparc/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/sparc64/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/v850/kernel/vmlinux.lds.S
··· 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 = .; \
+1 -7
arch/x86_64/kernel/vmlinux.lds.S
··· 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 = .;
+1 -7
arch/xtensa/kernel/vmlinux.lds.S
··· 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
+10
include/asm-generic/vmlinux.lds.h
··· 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) 225 +