]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* Kernel link layout for various "sections" |
2 | * | |
3 | * Copyright (C) 1999-2003 Matthew Wilcox <willy at parisc-linux.org> | |
4 | * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org> | |
5 | * Copyright (C) 2000 John Marvin <jsm at parisc-linux.org> | |
6 | * Copyright (C) 2000 Michael Ang <mang with subcarrier.org> | |
7 | * Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org> | |
8 | * Copyright (C) 2003 James Bottomley <jejb with parisc-linux.org> | |
161bd3bf HD |
9 | * Copyright (C) 2006-2013 Helge Deller <deller@gmx.de> |
10 | */ | |
11 | ||
12 | /* | |
13 | * Put page table entries (swapper_pg_dir) as the first thing in .bss. This | |
14 | * will ensure that it has .bss alignment (PAGE_SIZE). | |
1da177e4 | 15 | */ |
161bd3bf HD |
16 | #define BSS_FIRST_SECTIONS *(.data..vm0.pmd) \ |
17 | *(.data..vm0.pgd) \ | |
18 | *(.data..vm0.pte) | |
19 | ||
1da177e4 | 20 | #include <asm-generic/vmlinux.lds.h> |
161bd3bf | 21 | |
1da177e4 LT |
22 | /* needed for the processor specific cache alignment size */ |
23 | #include <asm/cache.h> | |
24 | #include <asm/page.h> | |
2fd83038 | 25 | #include <asm/asm-offsets.h> |
8cf06fc9 | 26 | #include <asm/thread_info.h> |
1da177e4 LT |
27 | |
28 | /* ld script to make hppa Linux kernel */ | |
29 | #ifndef CONFIG_64BIT | |
30 | OUTPUT_FORMAT("elf32-hppa-linux") | |
31 | OUTPUT_ARCH(hppa) | |
32 | #else | |
33 | OUTPUT_FORMAT("elf64-hppa-linux") | |
34 | OUTPUT_ARCH(hppa:hppa2.0w) | |
35 | #endif | |
36 | ||
161bd3bf | 37 | ENTRY(parisc_kernel_start) |
1da177e4 LT |
38 | #ifndef CONFIG_64BIT |
39 | jiffies = jiffies_64 + 4; | |
40 | #else | |
41 | jiffies = jiffies_64; | |
42 | #endif | |
43 | SECTIONS | |
44 | { | |
be1b3d8c | 45 | . = KERNEL_BINARY_TEXT_START; |
1da177e4 | 46 | |
161bd3bf HD |
47 | __init_begin = .; |
48 | HEAD_TEXT_SECTION | |
49 | INIT_TEXT_SECTION(8) | |
50 | ||
51 | . = ALIGN(PAGE_SIZE); | |
52 | INIT_DATA_SECTION(PAGE_SIZE) | |
53 | /* we have to discard exit text and such at runtime, not link time */ | |
54 | .exit.text : | |
55 | { | |
56 | EXIT_TEXT | |
57 | } | |
58 | .exit.data : | |
59 | { | |
60 | EXIT_DATA | |
61 | } | |
62 | PERCPU_SECTION(8) | |
41b85a11 | 63 | . = ALIGN(HUGEPAGE_SIZE); |
161bd3bf HD |
64 | __init_end = .; |
65 | /* freed after init ends here */ | |
66 | ||
be1b3d8c | 67 | _text = .; /* Text and read-only data */ |
161bd3bf HD |
68 | _stext = .; |
69 | .text ALIGN(PAGE_SIZE) : { | |
be1b3d8c SR |
70 | TEXT_TEXT |
71 | SCHED_TEXT | |
6727ad9e | 72 | CPUIDLE_TEXT |
be1b3d8c | 73 | LOCK_TEXT |
d75f054a HD |
74 | KPROBES_TEXT |
75 | IRQENTRY_TEXT | |
be7635e7 | 76 | SOFTIRQENTRY_TEXT |
be1b3d8c SR |
77 | *(.text.do_softirq) |
78 | *(.text.sys_exit) | |
79 | *(.text.do_sigaltstack) | |
80 | *(.text.do_fork) | |
81 | *(.text.*) | |
82 | *(.fixup) | |
83 | *(.lock.text) /* out-of-line lock text */ | |
84 | *(.gnu.warning) | |
ed5fb247 | 85 | } |
161bd3bf | 86 | . = ALIGN(PAGE_SIZE); |
be1b3d8c | 87 | _etext = .; |
161bd3bf | 88 | /* End of text section */ |
1da177e4 | 89 | |
a2d063ac SR |
90 | /* Start of data section */ |
91 | _sdata = .; | |
92 | ||
f8850abb HD |
93 | /* Architecturally we need to keep __gp below 0x1000000 and thus |
94 | * in front of RO_DATA_SECTION() which stores lots of tracepoint | |
95 | * and ftrace symbols. */ | |
161bd3bf HD |
96 | #ifdef CONFIG_64BIT |
97 | . = ALIGN(16); | |
98 | /* Linkage tables */ | |
99 | .opd : { | |
100 | *(.opd) | |
101 | } PROVIDE (__gp = .); | |
102 | .plt : { | |
103 | *(.plt) | |
104 | } | |
105 | .dlt : { | |
106 | *(.dlt) | |
107 | } | |
108 | #endif | |
81b4b98a | 109 | |
f8850abb HD |
110 | RO_DATA_SECTION(8) |
111 | ||
f79b076e HD |
112 | /* RO because of BUILDTIME_EXTABLE_SORT */ |
113 | EXCEPTION_TABLE(8) | |
114 | NOTES | |
115 | ||
be1b3d8c SR |
116 | /* unwind info */ |
117 | .PARISC.unwind : { | |
118 | __start___unwind = .; | |
119 | *(.PARISC.unwind) | |
120 | __stop___unwind = .; | |
121 | } | |
2fd83038 | 122 | |
161bd3bf HD |
123 | /* writeable */ |
124 | /* Make sure this is page aligned so | |
125 | * that we can properly leave these | |
126 | * as writable | |
127 | */ | |
41b85a11 | 128 | . = ALIGN(HUGEPAGE_SIZE); |
161bd3bf HD |
129 | data_start = .; |
130 | ||
be1b3d8c | 131 | /* Data */ |
9372450c | 132 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE) |
1da177e4 | 133 | |
be1b3d8c SR |
134 | /* PA-RISC locks requires 16-byte alignment */ |
135 | . = ALIGN(16); | |
a7df554e DV |
136 | .data..lock_aligned : { |
137 | *(.data..lock_aligned) | |
be1b3d8c | 138 | } |
1da177e4 | 139 | |
be1b3d8c SR |
140 | /* End of data section */ |
141 | _edata = .; | |
1da177e4 | 142 | |
be1b3d8c | 143 | /* BSS */ |
41b85a11 HD |
144 | BSS_SECTION(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE) |
145 | ||
41b85a11 | 146 | . = ALIGN(HUGEPAGE_SIZE); |
be1b3d8c | 147 | _end = . ; |
5fb7dc37 | 148 | |
023bf6f1 TH |
149 | STABS_DEBUG |
150 | .note 0 : { *(.note) } | |
151 | ||
be1b3d8c | 152 | /* Sections to be discarded */ |
023bf6f1 | 153 | DISCARDS |
be1b3d8c | 154 | /DISCARD/ : { |
1da177e4 | 155 | #ifdef CONFIG_64BIT |
be1b3d8c SR |
156 | /* temporary hack until binutils is fixed to not emit these |
157 | * for static binaries | |
158 | */ | |
159 | *(.interp) | |
160 | *(.dynsym) | |
161 | *(.dynstr) | |
162 | *(.dynamic) | |
163 | *(.hash) | |
164 | *(.gnu.hash) | |
1da177e4 LT |
165 | #endif |
166 | } | |
1da177e4 | 167 | } |