^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) #define EMITS_PT_NOTE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #define RO_EXCEPTION_TABLE_ALIGN 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <asm-generic/vmlinux.lds.h>
^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/page.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/setup.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) OUTPUT_FORMAT("elf64-alpha")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) OUTPUT_ARCH(alpha)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) ENTRY(__start)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) PHDRS { text PT_LOAD; note PT_NOTE; }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) jiffies = jiffies_64;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) SECTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) . = 0xfffffc0000310000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) . = 0xfffffc0001010000;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) _text = .; /* Text and read-only data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .text : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) HEAD_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) TEXT_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) SCHED_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) CPUIDLE_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) LOCK_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) *(.fixup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) *(.gnu.warning)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) } :text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) swapper_pg_dir = SWAPPER_PGD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) _etext = .; /* End of text section */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) RO_DATA(4096)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) /* Will be freed after init */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) __init_begin = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) INIT_TEXT_SECTION(PAGE_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) INIT_DATA_SECTION(16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) PERCPU_SECTION(L1_CACHE_BYTES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /* Align to THREAD_SIZE rather than PAGE_SIZE here so any padding page
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) needed for the THREAD_SIZE aligned init_task gets freed after init */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) . = ALIGN(THREAD_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) __init_end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* Freed after init ends here */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) _sdata = .; /* Start of rw data section */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) _data = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) .got : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) *(.got)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) .sdata : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) *(.sdata)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) _edata = .; /* End of data section */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) BSS_SECTION(0, 0, 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) _end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) .mdebug 0 : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) *(.mdebug)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) .note 0 : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) *(.note)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) STABS_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) DWARF_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) ELF_DETAILS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) DISCARDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) }