瀏覽代碼

ARM: vmlinux.lds: rearrange .init output section

Keep the various linker tables as separate output sections rather
than combining them together into one big .init section.  This
makes the 'vmlinux' easier to see what is placed where.

Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Tested-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 14 年之前
父節點
當前提交
1604d79d37
共有 1 個文件被更改,包括 29 次插入18 次删除
  1. 29 18
      arch/arm/kernel/vmlinux.lds.S

+ 29 - 18
arch/arm/kernel/vmlinux.lds.S

@@ -65,48 +65,59 @@ SECTIONS
 #else
 	. = PAGE_OFFSET + TEXT_OFFSET;
 #endif
-
-	.init : {			/* Init code and data		*/
+	.head.text : {
 		_stext = .;
-		_sinittext = .;
-			HEAD_TEXT
-			INIT_TEXT
-			ARM_EXIT_KEEP(EXIT_TEXT)
-		_einittext = .;
+		HEAD_TEXT
+	}
+	INIT_TEXT_SECTION(8)
+	.exit.text : {
+		ARM_EXIT_KEEP(EXIT_TEXT)
+	}
+	.init.proc.info : {
 		ARM_CPU_DISCARD(PROC_INFO)
+	}
+	.init.arch.info : {
 		__arch_info_begin = .;
-			*(.arch.info.init)
+		*(.arch.info.init)
 		__arch_info_end = .;
+	}
+	.init.tagtable : {
 		__tagtable_begin = .;
-			*(.taglist.init)
+		*(.taglist.init)
 		__tagtable_end = .;
+	}
 #ifdef CONFIG_SMP_ON_UP
+	.init.smpalt : {
 		__smpalt_begin = .;
-			*(.alt.smp.init)
+		*(.alt.smp.init)
 		__smpalt_end = .;
+	}
 #endif
-
+	.init.pv_table : {
 		__pv_table_begin = .;
-			*(.pv_table)
+		*(.pv_table)
 		__pv_table_end = .;
-
+	}
+	.init.data : {
+#ifndef CONFIG_XIP_KERNEL
+		INIT_DATA
+#endif
 		INIT_SETUP(16)
-
 		INIT_CALLS
 		CON_INITCALL
 		SECURITY_INITCALL
 		INIT_RAM_FS
-
+	}
 #ifndef CONFIG_XIP_KERNEL
-		__init_begin = _stext;
-		INIT_DATA
+	.exit.data : {
 		ARM_EXIT_KEEP(EXIT_DATA)
-#endif
 	}
+#endif
 
 	PERCPU_SECTION(32)
 
 #ifndef CONFIG_XIP_KERNEL
+	__init_begin = _stext;
 	. = ALIGN(PAGE_SIZE);
 	__init_end = .;
 #endif