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