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 | |
72 | LOCK_TEXT | |
d75f054a HD |
73 | KPROBES_TEXT |
74 | IRQENTRY_TEXT | |
be7635e7 | 75 | SOFTIRQENTRY_TEXT |
be1b3d8c SR |
76 | *(.text.do_softirq) |
77 | *(.text.sys_exit) | |
78 | *(.text.do_sigaltstack) | |
79 | *(.text.do_fork) | |
80 | *(.text.*) | |
81 | *(.fixup) | |
82 | *(.lock.text) /* out-of-line lock text */ | |
83 | *(.gnu.warning) | |
ed5fb247 | 84 | } |
161bd3bf | 85 | . = ALIGN(PAGE_SIZE); |
be1b3d8c | 86 | _etext = .; |
161bd3bf | 87 | /* End of text section */ |
1da177e4 | 88 | |
a2d063ac SR |
89 | /* Start of data section */ |
90 | _sdata = .; | |
91 | ||
161bd3bf | 92 | RO_DATA_SECTION(8) |
1da177e4 | 93 | |
161bd3bf HD |
94 | #ifdef CONFIG_64BIT |
95 | . = ALIGN(16); | |
96 | /* Linkage tables */ | |
97 | .opd : { | |
98 | *(.opd) | |
99 | } PROVIDE (__gp = .); | |
100 | .plt : { | |
101 | *(.plt) | |
102 | } | |
103 | .dlt : { | |
104 | *(.dlt) | |
105 | } | |
106 | #endif | |
81b4b98a | 107 | |
be1b3d8c SR |
108 | /* unwind info */ |
109 | .PARISC.unwind : { | |
110 | __start___unwind = .; | |
111 | *(.PARISC.unwind) | |
112 | __stop___unwind = .; | |
113 | } | |
2fd83038 | 114 | |
161bd3bf HD |
115 | /* writeable */ |
116 | /* Make sure this is page aligned so | |
117 | * that we can properly leave these | |
118 | * as writable | |
119 | */ | |
41b85a11 | 120 | . = ALIGN(HUGEPAGE_SIZE); |
161bd3bf HD |
121 | data_start = .; |
122 | ||
123 | EXCEPTION_TABLE(8) | |
33a932d1 HD |
124 | NOTES |
125 | ||
be1b3d8c | 126 | /* Data */ |
9372450c | 127 | RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE) |
1da177e4 | 128 | |
be1b3d8c SR |
129 | /* PA-RISC locks requires 16-byte alignment */ |
130 | . = ALIGN(16); | |
a7df554e DV |
131 | .data..lock_aligned : { |
132 | *(.data..lock_aligned) | |
be1b3d8c | 133 | } |
1da177e4 | 134 | |
be1b3d8c SR |
135 | /* End of data section */ |
136 | _edata = .; | |
1da177e4 | 137 | |
be1b3d8c | 138 | /* BSS */ |
41b85a11 HD |
139 | BSS_SECTION(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE) |
140 | ||
141 | /* bootmap is allocated in setup_bootmem() directly behind bss. */ | |
1da177e4 | 142 | |
41b85a11 | 143 | . = ALIGN(HUGEPAGE_SIZE); |
be1b3d8c | 144 | _end = . ; |
5fb7dc37 | 145 | |
023bf6f1 TH |
146 | STABS_DEBUG |
147 | .note 0 : { *(.note) } | |
148 | ||
be1b3d8c | 149 | /* Sections to be discarded */ |
023bf6f1 | 150 | DISCARDS |
be1b3d8c | 151 | /DISCARD/ : { |
1da177e4 | 152 | #ifdef CONFIG_64BIT |
be1b3d8c SR |
153 | /* temporary hack until binutils is fixed to not emit these |
154 | * for static binaries | |
155 | */ | |
156 | *(.interp) | |
157 | *(.dynsym) | |
158 | *(.dynstr) | |
159 | *(.dynamic) | |
160 | *(.hash) | |
161 | *(.gnu.hash) | |
1da177e4 LT |
162 | #endif |
163 | } | |
1da177e4 | 164 | } |