aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorMike Frysinger <michael.frysinger@analog.com>2007-08-27 04:08:53 -0400
committerBryan Wu <bryan.wu@analog.com>2007-08-27 04:08:53 -0400
commit27d875f2c134c4b26860ccdd03b4c52cce4efc2c (patch)
tree5967e1a42f638a8e73d124e8822ece0b33e45dfd /arch/blackfin/kernel/vmlinux.lds.S
parentd8350e704e5a47784d108d57c27dbb7b9c0a4369 (diff)
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>
Diffstat (limited to 'arch/blackfin/kernel/vmlinux.lds.S')
-rw-r--r--arch/blackfin/kernel/vmlinux.lds.S42
1 files changed, 27 insertions, 15 deletions
diff --git a/arch/blackfin/kernel/vmlinux.lds.S b/arch/blackfin/kernel/vmlinux.lds.S
index e40b66ae1b79..cd1cea05f1a8 100644
--- a/arch/blackfin/kernel/vmlinux.lds.S
+++ b/arch/blackfin/kernel/vmlinux.lds.S
@@ -46,11 +46,11 @@ SECTIONS
46 __text = .; 46 __text = .;
47 _text = .; 47 _text = .;
48 __stext = .; 48 __stext = .;
49 *(.text.*)
50 TEXT_TEXT 49 TEXT_TEXT
51 SCHED_TEXT 50 SCHED_TEXT
52 LOCK_TEXT 51 LOCK_TEXT
53 *(.text.lock) 52 KPROBES_TEXT
53 *(.text.*)
54 *(.fixup) 54 *(.fixup)
55 55
56 . = ALIGN(16); 56 . = ALIGN(16);
@@ -62,7 +62,7 @@ SECTIONS
62 __etext = .; 62 __etext = .;
63 } 63 }
64 64
65 RODATA 65 RO_DATA(PAGE_SIZE)
66 66
67 .data : 67 .data :
68 { 68 {
@@ -73,51 +73,63 @@ SECTIONS
73 __sdata = .; 73 __sdata = .;
74 . = ALIGN(THREAD_SIZE); 74 . = ALIGN(THREAD_SIZE);
75 *(.data.init_task) 75 *(.data.init_task)
76 DATA_DATA
77 *(.data.*)
78 CONSTRUCTORS
79 76
80 . = ALIGN(32); 77 . = ALIGN(32);
81 *(.data.cacheline_aligned) 78 *(.data.cacheline_aligned)
82 79
80 DATA_DATA
81 *(.data.*)
82 CONSTRUCTORS
83
83 . = ALIGN(THREAD_SIZE); 84 . = ALIGN(THREAD_SIZE);
84 __edata = .; 85 __edata = .;
85 } 86 }
86 87
87 ___init_begin = .; 88 ___init_begin = .;
88 .init : 89
90 .init.text :
89 { 91 {
90 . = ALIGN(PAGE_SIZE); 92 . = ALIGN(PAGE_SIZE);
91 __sinittext = .; 93 __sinittext = .;
92 *(.init.text) 94 *(.init.text)
93 __einittext = .; 95 __einittext = .;
96 }
97 .init.data :
98 {
99 . = ALIGN(16);
94 *(.init.data) 100 *(.init.data)
101 }
102 .init.setup :
103 {
95 . = ALIGN(16); 104 . = ALIGN(16);
96 ___setup_start = .; 105 ___setup_start = .;
97 *(.init.setup) 106 *(.init.setup)
98 ___setup_end = .; 107 ___setup_end = .;
99 ___start___param = .; 108 }
100 *(__param) 109 .initcall.init :
101 ___stop___param = .; 110 {
102 ___initcall_start = .; 111 ___initcall_start = .;
103 INITCALLS 112 INITCALLS
104 ___initcall_end = .; 113 ___initcall_end = .;
114 }
115 .con_initcall.init :
116 {
105 ___con_initcall_start = .; 117 ___con_initcall_start = .;
106 *(.con_initcall.init) 118 *(.con_initcall.init)
107 ___con_initcall_end = .; 119 ___con_initcall_end = .;
108 ___security_initcall_start = .; 120 }
109 *(.security_initcall.init) 121 SECURITY_INIT
110 ___security_initcall_end = .; 122 .init.ramfs :
123 {
111 . = ALIGN(4); 124 . = ALIGN(4);
112 ___initramfs_start = .; 125 ___initramfs_start = .;
113 *(.init.ramfs) 126 *(.init.ramfs)
114 ___initramfs_end = .; 127 ___initramfs_end = .;
115 . = ALIGN(4);
116 } 128 }
117 129
118 __l1_lma_start = .; 130 __l1_lma_start = .;
119 131
120 .text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init)) 132 .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
121 { 133 {
122 . = ALIGN(4); 134 . = ALIGN(4);
123 __stext_l1 = .; 135 __stext_l1 = .;