Browse Source

Blackfin arch: vmlinux.lds.S, break up our .init into separate sections

Break up our .init into separate section like all other ports do and
so that we dont mix text and data (causes disassembly headaches as
pointed out by Robin)

Cc: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Mike Frysinger 17 năm trước cách đây
mục cha
commit
27d875f2c1
1 tập tin đã thay đổi với 27 bổ sung15 xóa
  1. 27 15
      arch/blackfin/kernel/vmlinux.lds.S

+ 27 - 15
arch/blackfin/kernel/vmlinux.lds.S

@@ -46,11 +46,11 @@ SECTIONS
 		__text = .;
 		_text = .;
 		__stext = .;
-		*(.text.*)
 		TEXT_TEXT
 		SCHED_TEXT
 		LOCK_TEXT
-		*(.text.lock)
+		KPROBES_TEXT
+		*(.text.*)
 		*(.fixup)
 
 		. = ALIGN(16);
@@ -62,7 +62,7 @@ SECTIONS
 		__etext = .;
 	}
 
-	RODATA
+	RO_DATA(PAGE_SIZE)
 
 	.data :
 	{
@@ -73,51 +73,63 @@ SECTIONS
 		__sdata = .;
 		. = ALIGN(THREAD_SIZE);
 		*(.data.init_task)
-		DATA_DATA
-		*(.data.*)
-		CONSTRUCTORS
 
 		. = ALIGN(32);
 		*(.data.cacheline_aligned)
 
+		DATA_DATA
+		*(.data.*)
+		CONSTRUCTORS
+
 		. = ALIGN(THREAD_SIZE);
 		__edata = .;
 	}
 
 	___init_begin = .;
-	.init :
+
+	.init.text :
 	{
 		. = ALIGN(PAGE_SIZE);
 		__sinittext = .;
 		*(.init.text)
 		__einittext = .;
+	}
+	.init.data :
+	{
+		. = ALIGN(16);
 		*(.init.data)
+	}
+	.init.setup :
+	{
 		. = ALIGN(16);
 		___setup_start = .;
 		*(.init.setup)
 		___setup_end = .;
-		___start___param = .;
-		*(__param)
-		___stop___param = .;
+	}
+	.initcall.init :
+	{
 		___initcall_start = .;
 		INITCALLS
 		___initcall_end = .;
+	}
+	.con_initcall.init :
+	{
 		___con_initcall_start = .;
 		*(.con_initcall.init)
 		___con_initcall_end = .;
-		___security_initcall_start = .;
-		*(.security_initcall.init)
-		___security_initcall_end = .;
+	}
+	SECURITY_INIT
+	.init.ramfs :
+	{
 		. = ALIGN(4);
 		___initramfs_start = .;
 		*(.init.ramfs)
 		___initramfs_end = .;
-		. = ALIGN(4);
 	}
 
 	__l1_lma_start = .;
 
-	.text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init))
+	.text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
 	{
 		. = ALIGN(4);
 		__stext_l1 = .;