|
@@ -231,6 +231,67 @@ SECTIONS
|
|
|
|
|
|
#endif /* CONFIG_X86_64 */
|
|
#endif /* CONFIG_X86_64 */
|
|
|
|
|
|
|
|
+ /* init_task */
|
|
|
|
+ . = ALIGN(THREAD_SIZE);
|
|
|
|
+ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
|
|
|
|
+ *(.data.init_task)
|
|
|
|
+ }
|
|
|
|
+#ifdef CONFIG_X86_64
|
|
|
|
+ :data.init
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * smp_locks might be freed after init
|
|
|
|
+ * start/end must be page aligned
|
|
|
|
+ */
|
|
|
|
+ . = ALIGN(PAGE_SIZE);
|
|
|
|
+ .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
|
|
|
|
+ __smp_locks = .;
|
|
|
|
+ *(.smp_locks)
|
|
|
|
+ __smp_locks_end = .;
|
|
|
|
+ . = ALIGN(PAGE_SIZE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* Init code and data - will be freed after init */
|
|
|
|
+ . = ALIGN(PAGE_SIZE);
|
|
|
|
+ __init_begin = .; /* paired with __init_end */
|
|
|
|
+ .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
|
|
|
|
+ _sinittext = .;
|
|
|
|
+ INIT_TEXT
|
|
|
|
+ _einittext = .;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
|
|
|
|
+ INIT_DATA
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ . = ALIGN(16);
|
|
|
|
+ .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
|
|
|
|
+ __setup_start = .;
|
|
|
|
+ *(.init.setup)
|
|
|
|
+ __setup_end = .;
|
|
|
|
+ }
|
|
|
|
+ .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
|
|
|
|
+ __initcall_start = .;
|
|
|
|
+ INITCALLS
|
|
|
|
+ __initcall_end = .;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
|
|
|
|
+ __con_initcall_start = .;
|
|
|
|
+ *(.con_initcall.init)
|
|
|
|
+ __con_initcall_end = .;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
|
|
|
|
+ __x86_cpu_dev_start = .;
|
|
|
|
+ *(.x86_cpu_dev.init)
|
|
|
|
+ __x86_cpu_dev_end = .;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ SECURITY_INIT
|
|
|
|
+
|
|
|
|
+
|
|
#ifdef CONFIG_X86_32
|
|
#ifdef CONFIG_X86_32
|
|
# include "vmlinux_32.lds.S"
|
|
# include "vmlinux_32.lds.S"
|
|
#else
|
|
#else
|