1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* |
3 | * ld script to make SuperH Linux kernel |
4 | * Written by Niibe Yutaka and Paul Mundt |
5 | */ |
6 | OUTPUT_ARCH(sh) |
7 | #define RUNTIME_DISCARD_EXIT |
8 | #include <asm/thread_info.h> |
9 | #include <asm/cache.h> |
10 | #include <asm/vmlinux.lds.h> |
11 | |
12 | #ifdef CONFIG_PMB |
13 | #define MEMORY_OFFSET 0 |
14 | #else |
15 | #define MEMORY_OFFSET __MEMORY_START |
16 | #endif |
17 | |
18 | ENTRY(_start) |
19 | SECTIONS |
20 | { |
21 | . = PAGE_OFFSET + MEMORY_OFFSET + PHYSICAL_OFFSET + CONFIG_ZERO_PAGE_OFFSET; |
22 | |
23 | _text = .; /* Text and read-only data */ |
24 | |
25 | .empty_zero_page : AT(ADDR(.empty_zero_page)) { |
26 | *(.empty_zero_page) |
27 | } = 0 |
28 | |
29 | .text : AT(ADDR(.text)) { |
30 | HEAD_TEXT |
31 | TEXT_TEXT |
32 | SCHED_TEXT |
33 | LOCK_TEXT |
34 | KPROBES_TEXT |
35 | IRQENTRY_TEXT |
36 | SOFTIRQENTRY_TEXT |
37 | *(.fixup) |
38 | *(.gnu.warning) |
39 | _etext = .; /* End of text section */ |
40 | } = 0x0009 |
41 | |
42 | EXCEPTION_TABLE(16) |
43 | |
44 | _sdata = .; |
45 | RO_DATA(PAGE_SIZE) |
46 | RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) |
47 | _edata = .; |
48 | |
49 | DWARF_EH_FRAME |
50 | |
51 | . = ALIGN(PAGE_SIZE); /* Init code and data */ |
52 | __init_begin = .; |
53 | INIT_TEXT_SECTION(PAGE_SIZE) |
54 | INIT_DATA_SECTION(16) |
55 | |
56 | . = ALIGN(4); |
57 | .machvec.init : AT(ADDR(.machvec.init)) { |
58 | __machvec_start = .; |
59 | *(.machvec.init) |
60 | __machvec_end = .; |
61 | } |
62 | |
63 | PERCPU_SECTION(L1_CACHE_BYTES) |
64 | |
65 | /* |
66 | * .exit.text is discarded at runtime, not link time, to deal with |
67 | * references from __bug_table |
68 | */ |
69 | .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT } |
70 | .exit.data : AT(ADDR(.exit.data)) { EXIT_DATA } |
71 | |
72 | . = ALIGN(PAGE_SIZE); |
73 | __init_end = .; |
74 | BSS_SECTION(0, PAGE_SIZE, 4) |
75 | _end = . ; |
76 | |
77 | STABS_DEBUG |
78 | DWARF_DEBUG |
79 | ELF_DETAILS |
80 | |
81 | DISCARDS |
82 | } |
83 | |