1 /* SPDX-License-Identifier: GPL-2.0 */ 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Kernel link layout for various "sections !! 2 #if defined(CONFIG_MMU) && !defined(CONFIG_COLDFIRE) 3 * !! 3 PHDRS 4 * Copyright (C) 1999-2003 Matthew Wilcox < !! 4 { 5 * Copyright (C) 2000-2003 Paul Bame <bame !! 5 text PT_LOAD FILEHDR PHDRS FLAGS (7); 6 * Copyright (C) 2000 John Marvin <jsm at p !! 6 data PT_LOAD FLAGS (7); 7 * Copyright (C) 2000 Michael Ang <mang wit !! 7 } 8 * Copyright (C) 2002 Randolph Chung <tausq !! 8 #ifdef CONFIG_SUN3 9 * Copyright (C) 2003 James Bottomley <jejb !! 9 #include "vmlinux-sun3.lds" 10 * Copyright (C) 2006-2013 Helge Deller <del << 11 */ << 12 << 13 /* << 14 * Put page table entries (swapper_pg_dir) as << 15 * will ensure that it has .bss alignment (PAG << 16 */ << 17 #define BSS_FIRST_SECTIONS *(.data..vm0.p << 18 *(.data..vm0.p << 19 *(.data..vm0.p << 20 << 21 #define CC_USING_PATCHABLE_FUNCTION_ENTRY << 22 #define RO_EXCEPTION_TABLE_ALIGN 8 << 23 << 24 #include <asm-generic/vmlinux.lds.h> << 25 << 26 /* needed for the processor specific cache ali << 27 #include <asm/cache.h> << 28 #include <asm/page.h> << 29 #include <asm/asm-offsets.h> << 30 #include <asm/thread_info.h> << 31 << 32 /* ld script to make hppa Linux kernel */ << 33 #ifndef CONFIG_64BIT << 34 OUTPUT_FORMAT("elf32-hppa-linux") << 35 OUTPUT_ARCH(hppa) << 36 #else << 37 OUTPUT_FORMAT("elf64-hppa-linux") << 38 OUTPUT_ARCH(hppa:hppa2.0w) << 39 #endif << 40 << 41 #define EXIT_TEXT_SECTIONS() .exit.text : { << 42 #if !defined(CONFIG_64BIT) || defined(CONFIG_M << 43 #define MLONGCALL_KEEP(x) << 44 #define MLONGCALL_DISCARD(x) x << 45 #else 10 #else 46 #define MLONGCALL_KEEP(x) x !! 11 #include "vmlinux-std.lds" 47 #define MLONGCALL_DISCARD(x) << 48 #endif 12 #endif 49 << 50 ENTRY(parisc_kernel_start) << 51 #ifndef CONFIG_64BIT << 52 jiffies = jiffies_64 + 4; << 53 #else 13 #else 54 jiffies = jiffies_64; !! 14 #include "vmlinux-nommu.lds" 55 #endif 15 #endif 56 SECTIONS << 57 { << 58 . = KERNEL_BINARY_TEXT_START; << 59 << 60 __init_begin = .; << 61 HEAD_TEXT_SECTION << 62 MLONGCALL_DISCARD(INIT_TEXT_SECTION(8) << 63 << 64 . = ALIGN(PAGE_SIZE); << 65 INIT_DATA_SECTION(PAGE_SIZE) << 66 MLONGCALL_DISCARD(EXIT_TEXT_SECTIONS() << 67 .exit.data : << 68 { << 69 EXIT_DATA << 70 } << 71 PERCPU_SECTION(8) << 72 . = ALIGN(4); << 73 .altinstructions : { << 74 __alt_instructions = .; << 75 *(.altinstructions) << 76 __alt_instructions_end = .; << 77 } << 78 . = ALIGN(HUGEPAGE_SIZE); << 79 __init_end = .; << 80 /* freed after init ends here */ << 81 << 82 _text = .; /* Text and re << 83 _stext = .; << 84 MLONGCALL_KEEP(INIT_TEXT_SECTION(8)) << 85 .text ALIGN(PAGE_SIZE) : { << 86 TEXT_TEXT << 87 LOCK_TEXT << 88 SCHED_TEXT << 89 KPROBES_TEXT << 90 IRQENTRY_TEXT << 91 SOFTIRQENTRY_TEXT << 92 *(.text.do_softirq) << 93 *(.text.sys_exit) << 94 *(.text.do_sigaltstack) << 95 *(.text.do_fork) << 96 *(.text.div) << 97 *($$*) /* mil << 98 *(.text.*) << 99 *(.fixup) << 100 *(.lock.text) /* out << 101 *(.gnu.warning) << 102 } << 103 MLONGCALL_KEEP(EXIT_TEXT_SECTIONS()) << 104 . = ALIGN(PAGE_SIZE); << 105 _etext = .; << 106 /* End of text section */ << 107 << 108 /* Start of data section */ << 109 _sdata = .; << 110 << 111 /* Architecturally we need to keep __g << 112 * in front of RO_DATA() which stores << 113 * and ftrace symbols. */ << 114 #ifdef CONFIG_64BIT << 115 . = ALIGN(16); << 116 /* Linkage tables */ << 117 .opd : { << 118 __start_opd = .; << 119 *(.opd) << 120 __end_opd = .; << 121 } PROVIDE (__gp = .); << 122 .plt : { << 123 *(.plt) << 124 } << 125 .dlt : { << 126 *(.dlt) << 127 } << 128 #endif << 129 << 130 RO_DATA(PAGE_SIZE) << 131 << 132 /* unwind info */ << 133 . = ALIGN(4); << 134 .PARISC.unwind : { << 135 __start___unwind = .; << 136 *(.PARISC.unwind) << 137 __stop___unwind = .; << 138 } << 139 << 140 /* writeable */ << 141 /* Make sure this is page aligned so << 142 * that we can properly leave these << 143 * as writable << 144 */ << 145 . = ALIGN(HUGEPAGE_SIZE); << 146 data_start = .; << 147 << 148 /* Data */ << 149 RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, PAG << 150 << 151 /* PA-RISC locks requires 16-byte alig << 152 . = ALIGN(16); << 153 .data..lock_aligned : { << 154 *(.data..lock_aligned) << 155 } << 156 << 157 /* End of data section */ << 158 . = ALIGN(PAGE_SIZE); << 159 _edata = .; << 160 << 161 /* BSS */ << 162 BSS_SECTION(PAGE_SIZE, PAGE_SIZE, PAGE << 163 << 164 . = ALIGN(HUGEPAGE_SIZE); << 165 _end = . ; << 166 << 167 STABS_DEBUG << 168 ELF_DETAILS << 169 .note 0 : { *(.note) } << 170 << 171 /* Sections to be discarded */ << 172 DISCARDS << 173 /DISCARD/ : { << 174 #ifdef CONFIG_64BIT << 175 /* temporary hack until binuti << 176 * for static binaries << 177 */ << 178 *(.interp) << 179 *(.dynsym) << 180 *(.dynstr) << 181 *(.dynamic) << 182 *(.hash) << 183 *(.gnu.hash) << 184 #endif << 185 } << 186 } <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.