1 /* SPDX-License-Identifier: GPL-2.0-only */ !! 1 PHDRS 2 /* << 3 * Copyright (C) 2012 Regents of the Universit << 4 * Copyright (C) 2017 SiFive << 5 */ << 6 << 7 #define RO_EXCEPTION_TABLE_ALIGN 4 << 8 #define RUNTIME_DISCARD_EXIT << 9 << 10 #ifdef CONFIG_XIP_KERNEL << 11 #include "vmlinux-xip.lds.S" << 12 #else << 13 << 14 #include <asm/pgtable.h> << 15 #define LOAD_OFFSET KERNEL_LINK_ADDR << 16 << 17 #include <asm/vmlinux.lds.h> << 18 #include <asm/page.h> << 19 #include <asm/cache.h> << 20 #include <asm/thread_info.h> << 21 #include <asm/set_memory.h> << 22 #include "image-vars.h" << 23 << 24 #include <linux/sizes.h> << 25 OUTPUT_ARCH(riscv) << 26 ENTRY(_start) << 27 << 28 jiffies = jiffies_64; << 29 << 30 SECTIONS << 31 { 2 { 32 /* Beginning of code and text segment !! 3 text PT_LOAD FILEHDR PHDRS FLAGS (7); 33 . = LOAD_OFFSET; !! 4 data PT_LOAD FLAGS (7); 34 _start = .; << 35 HEAD_TEXT_SECTION << 36 . = ALIGN(PAGE_SIZE); << 37 << 38 .text : { << 39 _text = .; << 40 _stext = .; << 41 TEXT_TEXT << 42 SCHED_TEXT << 43 LOCK_TEXT << 44 KPROBES_TEXT << 45 ENTRY_TEXT << 46 IRQENTRY_TEXT << 47 SOFTIRQENTRY_TEXT << 48 _etext = .; << 49 } << 50 << 51 . = ALIGN(SECTION_ALIGN); << 52 __init_begin = .; << 53 __init_text_begin = .; << 54 .init.text : AT(ADDR(.init.text) - LOA << 55 _sinittext = .; << 56 INIT_TEXT << 57 _einittext = .; << 58 } << 59 << 60 . = ALIGN(8); << 61 __soc_early_init_table : { << 62 __soc_early_init_table_start = << 63 KEEP(*(__soc_early_init_table) << 64 __soc_early_init_table_end = . << 65 } << 66 __soc_builtin_dtb_table : { << 67 __soc_builtin_dtb_table_start << 68 KEEP(*(__soc_builtin_dtb_table << 69 __soc_builtin_dtb_table_end = << 70 } << 71 /* we have to discard exit text and su << 72 __exittext_begin = .; << 73 .exit.text : << 74 { << 75 EXIT_TEXT << 76 } << 77 __exittext_end = .; << 78 << 79 __init_text_end = .; << 80 . = ALIGN(SECTION_ALIGN); << 81 #ifdef CONFIG_EFI << 82 . = ALIGN(PECOFF_SECTION_ALIGNMENT); << 83 __pecoff_text_end = .; << 84 #endif << 85 /* Start of init data section */ << 86 __init_data_begin = .; << 87 INIT_DATA_SECTION(16) << 88 << 89 .init.pi : { << 90 KEEP(*(.init.pi*)) << 91 } << 92 << 93 .init.bss : { << 94 KEEP(*(.init.bss*)) /* fro << 95 } << 96 .exit.data : << 97 { << 98 EXIT_DATA << 99 } << 100 PERCPU_SECTION(L1_CACHE_BYTES) << 101 << 102 .rel.dyn : { << 103 *(.rel.dyn*) << 104 } << 105 << 106 .rela.dyn : ALIGN(8) { << 107 __rela_dyn_start = .; << 108 *(.rela .rela*) << 109 __rela_dyn_end = .; << 110 } << 111 << 112 __init_data_end = .; << 113 << 114 . = ALIGN(8); << 115 .alternative : { << 116 __alt_start = .; << 117 KEEP(*(.alternative)) << 118 __alt_end = .; << 119 } << 120 __init_end = .; << 121 << 122 /* Start of data section */ << 123 _sdata = .; << 124 RO_DATA(SECTION_ALIGN) << 125 .srodata : { << 126 *(.srodata*) << 127 } << 128 << 129 . = ALIGN(SECTION_ALIGN); << 130 _data = .; << 131 << 132 RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THR << 133 .sdata : { << 134 __global_pointer$ = . + 0x800; << 135 *(.sdata*) << 136 } << 137 << 138 .got : { *(.got*) } << 139 << 140 #ifdef CONFIG_RELOCATABLE << 141 .data.rel : { *(.data.rel*) } << 142 .plt : { *(.plt) } << 143 .dynamic : { *(.dynamic) } << 144 .dynsym : { *(.dynsym) } << 145 .dynstr : { *(.dynstr) } << 146 .hash : { *(.hash) } << 147 .gnu.hash : { *(.gnu.hash) } << 148 #endif << 149 << 150 #ifdef CONFIG_EFI << 151 .pecoff_edata_padding : { BYTE(0); . = << 152 __pecoff_data_raw_size = ABSOLUTE(. - << 153 __pecoff_data_raw_end = ABSOLUTE(.); << 154 #endif << 155 << 156 /* End of data section */ << 157 _edata = .; << 158 << 159 BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0) << 160 << 161 #ifdef CONFIG_EFI << 162 . = ALIGN(PECOFF_SECTION_ALIGNMENT); << 163 __pecoff_data_virt_size = ABSOLUTE(. - << 164 __pecoff_data_virt_end = ABSOLUTE(.); << 165 #endif << 166 _end = .; << 167 << 168 STABS_DEBUG << 169 DWARF_DEBUG << 170 ELF_DETAILS << 171 .riscv.attributes 0 : { *(.riscv.attri << 172 << 173 DISCARDS << 174 } 5 } 175 #endif /* CONFIG_XIP_KERNEL */ !! 6 #ifdef CONFIG_SUN3 >> 7 #include "vmlinux-sun3.lds" >> 8 #else >> 9 #include "vmlinux-std.lds" >> 10 #endif
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.