diff options
| author | David Howells <dhowells@redhat.com> | 2009-06-22 10:32:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-22 16:34:50 -0400 |
| commit | 2e8b5a09ebf1f98f02c1988a48415e89d4c25168 (patch) | |
| tree | e2affc58f82f20012d507f1ee257720451b779c5 | |
| parent | eadfe21989d728b5af936487627b4e288bd805f8 (diff) | |
MN10300: Fix the vmlinux ldscript
Fix the MN10300 vmlinux ldscript. It needs to use various macros from
asm-generic/vmlinux.lds.h to correctly include all that it needs to.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/mn10300/kernel/vmlinux.lds.S | 60 |
1 files changed, 16 insertions, 44 deletions
diff --git a/arch/mn10300/kernel/vmlinux.lds.S b/arch/mn10300/kernel/vmlinux.lds.S index 24de6b90f401..bcebcefb4ad7 100644 --- a/arch/mn10300/kernel/vmlinux.lds.S +++ b/arch/mn10300/kernel/vmlinux.lds.S | |||
| @@ -38,14 +38,10 @@ SECTIONS | |||
| 38 | 38 | ||
| 39 | _etext = .; /* End of text section */ | 39 | _etext = .; /* End of text section */ |
| 40 | 40 | ||
| 41 | . = ALIGN(16); /* Exception table */ | 41 | EXCEPTION_TABLE(16) |
| 42 | __start___ex_table = .; | ||
| 43 | __ex_table : { *(__ex_table) } | ||
| 44 | __stop___ex_table = .; | ||
| 45 | |||
| 46 | BUG_TABLE | 42 | BUG_TABLE |
| 47 | 43 | ||
| 48 | RODATA | 44 | RO_DATA(PAGE_SIZE) |
| 49 | 45 | ||
| 50 | /* writeable */ | 46 | /* writeable */ |
| 51 | .data : { /* Data */ | 47 | .data : { /* Data */ |
| @@ -53,27 +49,19 @@ SECTIONS | |||
| 53 | CONSTRUCTORS | 49 | CONSTRUCTORS |
| 54 | } | 50 | } |
| 55 | 51 | ||
| 56 | . = ALIGN(PAGE_SIZE); | 52 | .data_nosave : { NOSAVE_DATA; } |
| 57 | __nosave_begin = .; | ||
| 58 | .data_nosave : { *(.data.nosave) } | ||
| 59 | . = ALIGN(PAGE_SIZE); | ||
| 60 | __nosave_end = .; | ||
| 61 | |||
| 62 | . = ALIGN(PAGE_SIZE); | ||
| 63 | .data.page_aligned : { *(.data.idt) } | ||
| 64 | 53 | ||
| 65 | . = ALIGN(32); | 54 | .data.page_aligned : { PAGE_ALIGNED_DATA(PAGE_SIZE); } |
| 66 | .data.cacheline_aligned : { *(.data.cacheline_aligned) } | 55 | .data.cacheline_aligned : { CACHELINE_ALIGNED_DATA(32); } |
| 67 | 56 | ||
| 68 | /* rarely changed data like cpu maps */ | 57 | /* rarely changed data like cpu maps */ |
| 69 | . = ALIGN(32); | 58 | . = ALIGN(32); |
| 70 | .data.read_mostly : AT(ADDR(.data.read_mostly)) { | 59 | .data.read_mostly : AT(ADDR(.data.read_mostly)) { |
| 71 | *(.data.read_mostly) | 60 | READ_MOSTLY_DATA(32); |
| 72 | _edata = .; /* End of data section */ | 61 | _edata = .; /* End of data section */ |
| 73 | } | 62 | } |
| 74 | 63 | ||
| 75 | . = ALIGN(THREAD_SIZE); /* init_task */ | 64 | .data.init_task : { INIT_TASK(THREAD_SIZE); } |
| 76 | .data.init_task : { *(.data.init_task) } | ||
| 77 | 65 | ||
| 78 | /* might get freed after init */ | 66 | /* might get freed after init */ |
| 79 | . = ALIGN(PAGE_SIZE); | 67 | . = ALIGN(PAGE_SIZE); |
| @@ -88,23 +76,18 @@ SECTIONS | |||
| 88 | __init_begin = .; | 76 | __init_begin = .; |
| 89 | .init.text : { | 77 | .init.text : { |
| 90 | _sinittext = .; | 78 | _sinittext = .; |
| 91 | *(.init.text) | 79 | INIT_TEXT; |
| 92 | _einittext = .; | 80 | _einittext = .; |
| 93 | } | 81 | } |
| 94 | .init.data : { *(.init.data) } | 82 | .init.data : { INIT_DATA; } |
| 95 | . = ALIGN(16); | 83 | .setup.init : { INIT_SETUP(16); } |
| 96 | __setup_start = .; | ||
| 97 | .setup.init : { KEEP(*(.init.setup)) } | ||
| 98 | __setup_end = .; | ||
| 99 | 84 | ||
| 100 | __initcall_start = .; | 85 | __initcall_start = .; |
| 101 | .initcall.init : { | 86 | .initcall.init : { |
| 102 | INITCALLS | 87 | INITCALLS |
| 103 | } | 88 | } |
| 104 | __initcall_end = .; | 89 | __initcall_end = .; |
| 105 | __con_initcall_start = .; | 90 | .con_initcall.init : { CON_INITCALL; } |
| 106 | .con_initcall.init : { *(.con_initcall.init) } | ||
| 107 | __con_initcall_end = .; | ||
| 108 | 91 | ||
| 109 | SECURITY_INIT | 92 | SECURITY_INIT |
| 110 | . = ALIGN(4); | 93 | . = ALIGN(4); |
| @@ -114,28 +97,17 @@ SECTIONS | |||
| 114 | .altinstr_replacement : { *(.altinstr_replacement) } | 97 | .altinstr_replacement : { *(.altinstr_replacement) } |
| 115 | /* .exit.text is discard at runtime, not link time, to deal with references | 98 | /* .exit.text is discard at runtime, not link time, to deal with references |
| 116 | from .altinstructions and .eh_frame */ | 99 | from .altinstructions and .eh_frame */ |
| 117 | .exit.text : { *(.exit.text) } | 100 | .exit.text : { EXIT_TEXT; } |
| 118 | .exit.data : { *(.exit.data) } | 101 | .exit.data : { EXIT_DATA; } |
| 119 | 102 | ||
| 120 | #ifdef CONFIG_BLK_DEV_INITRD | 103 | .init.ramfs : { INIT_RAM_FS; } |
| 121 | . = ALIGN(PAGE_SIZE); | ||
| 122 | __initramfs_start = .; | ||
| 123 | .init.ramfs : { *(.init.ramfs) } | ||
| 124 | __initramfs_end = .; | ||
| 125 | #endif | ||
| 126 | 104 | ||
| 127 | PERCPU(32) | 105 | PERCPU(32) |
| 128 | . = ALIGN(PAGE_SIZE); | 106 | . = ALIGN(PAGE_SIZE); |
| 129 | __init_end = .; | 107 | __init_end = .; |
| 130 | /* freed after init ends here */ | 108 | /* freed after init ends here */ |
| 131 | 109 | ||
| 132 | __bss_start = .; /* BSS */ | 110 | BSS(4) |
| 133 | .bss : { | ||
| 134 | *(.bss.page_aligned) | ||
| 135 | *(.bss) | ||
| 136 | } | ||
| 137 | . = ALIGN(4); | ||
| 138 | __bss_stop = .; | ||
| 139 | 111 | ||
| 140 | _end = . ; | 112 | _end = . ; |
| 141 | 113 | ||
| @@ -145,7 +117,7 @@ SECTIONS | |||
| 145 | 117 | ||
| 146 | /* Sections to be discarded */ | 118 | /* Sections to be discarded */ |
| 147 | /DISCARD/ : { | 119 | /DISCARD/ : { |
| 148 | *(.exitcall.exit) | 120 | EXIT_CALL |
| 149 | } | 121 | } |
| 150 | 122 | ||
| 151 | STABS_DEBUG | 123 | STABS_DEBUG |
