1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Kernel link layout for various "sections 3 * 4 * Copyright (C) 1999-2003 Matthew Wilcox < 5 * Copyright (C) 2000-2003 Paul Bame <bame 6 * Copyright (C) 2000 John Marvin <jsm at p 7 * Copyright (C) 2000 Michael Ang <mang wit 8 * Copyright (C) 2002 Randolph Chung <tausq 9 * Copyright (C) 2003 James Bottomley <jejb 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 46 #define MLONGCALL_KEEP(x) x 47 #define MLONGCALL_DISCARD(x) 48 #endif 49 50 ENTRY(parisc_kernel_start) 51 #ifndef CONFIG_64BIT 52 jiffies = jiffies_64 + 4; 53 #else 54 jiffies = jiffies_64; 55 #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.