| 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 | |
| 8 | |
| 9 | |
| 10 | |
| 11 |
|
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 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_start = .;
|
| 75 | SBSS(0)
|
| 76 | . = ALIGN(PAGE_SIZE);
|
| 77 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
|
| 78 | BSS_FIRST_SECTIONS
|
| 79 | . = ALIGN(PAGE_SIZE);
|
| 80 | *(.bss..page_aligned)
|
| 81 | . = ALIGN(PAGE_SIZE);
|
| 82 | *(.dynbss)
|
| 83 | *(BSS_MAIN)
|
| 84 | *(COMMON)
|
| 85 | . = ALIGN(8);
|
| 86 | }
|
| 87 | __bss_stop = .;
|
| 88 | _end = . ;
|
| 89 |
|
| 90 | STABS_DEBUG
|
| 91 | DWARF_DEBUG
|
| 92 | MODINFO
|
| 93 | ELF_DETAILS
|
| 94 |
|
| 95 | DISCARDS
|
| 96 | }
|