diff options
author | Nelson Elhage <nelhage@ksplice.com> | 2009-09-16 12:40:47 -0400 |
---|---|---|
committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2009-10-06 11:39:22 -0400 |
commit | 209205801caf24ba0d54cc607800ee20c7d5132a (patch) | |
tree | 3743eff6e73ccc942405f276c9ce1b2d039e3078 | |
parent | d94e5fcbf1420366dcb4102bafe04dbcfc0d0d4b (diff) |
avr32: clean up linker script using standard macros.
As a side effect, this patch changes the .init.ramfs data to be
PAGE_SIZE-aligned, instead of 32-byte aligned. Also, the init data is
moved into its own output sections rather than the .init output
section.
There should be no other changes to the resulting vmlinux as a result
of this patch.
Signed-off-by: Nelson Elhage <nelhage@ksplice.com>
Signed-off-by: Tim Abbott <tabbott@ksplice.com>
Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-rw-r--r-- | arch/avr32/kernel/vmlinux.lds.S | 64 |
1 files changed, 9 insertions, 55 deletions
diff --git a/arch/avr32/kernel/vmlinux.lds.S b/arch/avr32/kernel/vmlinux.lds.S index c4b56654349a..9cd2bd91d64a 100644 --- a/arch/avr32/kernel/vmlinux.lds.S +++ b/arch/avr32/kernel/vmlinux.lds.S | |||
@@ -39,30 +39,10 @@ SECTIONS | |||
39 | __tagtable_begin = .; | 39 | __tagtable_begin = .; |
40 | *(.taglist.init) | 40 | *(.taglist.init) |
41 | __tagtable_end = .; | 41 | __tagtable_end = .; |
42 | INIT_DATA | ||
43 | . = ALIGN(16); | ||
44 | __setup_start = .; | ||
45 | *(.init.setup) | ||
46 | __setup_end = .; | ||
47 | . = ALIGN(4); | ||
48 | __initcall_start = .; | ||
49 | INITCALLS | ||
50 | __initcall_end = .; | ||
51 | __con_initcall_start = .; | ||
52 | *(.con_initcall.init) | ||
53 | __con_initcall_end = .; | ||
54 | __security_initcall_start = .; | ||
55 | *(.security_initcall.init) | ||
56 | __security_initcall_end = .; | ||
57 | #ifdef CONFIG_BLK_DEV_INITRD | ||
58 | . = ALIGN(32); | ||
59 | __initramfs_start = .; | ||
60 | *(.init.ramfs) | ||
61 | __initramfs_end = .; | ||
62 | #endif | ||
63 | . = ALIGN(PAGE_SIZE); | ||
64 | __init_end = .; | ||
65 | } | 42 | } |
43 | INIT_DATA_SECTION(16) | ||
44 | . = ALIGN(PAGE_SIZE); | ||
45 | __init_end = .; | ||
66 | 46 | ||
67 | .text : AT(ADDR(.text) - LOAD_OFFSET) { | 47 | .text : AT(ADDR(.text) - LOAD_OFFSET) { |
68 | _evba = .; | 48 | _evba = .; |
@@ -78,34 +58,16 @@ SECTIONS | |||
78 | _etext = .; | 58 | _etext = .; |
79 | } = 0xd703d703 | 59 | } = 0xd703d703 |
80 | 60 | ||
81 | . = ALIGN(4); | 61 | EXCEPTION_TABLE(4) |
82 | __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { | ||
83 | __start___ex_table = .; | ||
84 | *(__ex_table) | ||
85 | __stop___ex_table = .; | ||
86 | } | ||
87 | |||
88 | RODATA | 62 | RODATA |
89 | 63 | ||
90 | . = ALIGN(THREAD_SIZE); | ||
91 | |||
92 | .data : AT(ADDR(.data) - LOAD_OFFSET) { | 64 | .data : AT(ADDR(.data) - LOAD_OFFSET) { |
93 | _data = .; | 65 | _data = .; |
94 | _sdata = .; | 66 | _sdata = .; |
95 | /* | ||
96 | * First, the init task union, aligned to an 8K boundary. | ||
97 | */ | ||
98 | *(.data.init_task) | ||
99 | 67 | ||
100 | /* Then, the page-aligned data */ | 68 | INIT_TASK_DATA(THREAD_SIZE) |
101 | . = ALIGN(PAGE_SIZE); | 69 | PAGE_ALIGNED_DATA(PAGE_SIZE); |
102 | *(.data.page_aligned) | 70 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) |
103 | |||
104 | /* Then, the cacheline aligned data */ | ||
105 | . = ALIGN(L1_CACHE_BYTES); | ||
106 | *(.data.cacheline_aligned) | ||
107 | |||
108 | /* And the rest... */ | ||
109 | *(.data.rel*) | 71 | *(.data.rel*) |
110 | DATA_DATA | 72 | DATA_DATA |
111 | CONSTRUCTORS | 73 | CONSTRUCTORS |
@@ -113,16 +75,8 @@ SECTIONS | |||
113 | _edata = .; | 75 | _edata = .; |
114 | } | 76 | } |
115 | 77 | ||
116 | 78 | BSS_SECTION(0, 8, 8) | |
117 | . = ALIGN(8); | 79 | _end = .; |
118 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { | ||
119 | __bss_start = .; | ||
120 | *(.bss) | ||
121 | *(COMMON) | ||
122 | . = ALIGN(8); | ||
123 | __bss_stop = .; | ||
124 | _end = .; | ||
125 | } | ||
126 | 80 | ||
127 | DWARF_DEBUG | 81 | DWARF_DEBUG |
128 | 82 | ||