~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/loongarch/kernel/vmlinux.lds.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #include <linux/sizes.h>
  3 #include <asm/asm-offsets.h>
  4 #include <asm/thread_info.h>
  5 #include <asm/orc_lookup.h>
  6 
  7 #define PAGE_SIZE _PAGE_SIZE
  8 #define RO_EXCEPTION_TABLE_ALIGN        4
  9 #define PHYSADDR_MASK                   0xffffffffffff /* 48-bit */
 10 
 11 /*
 12  * Put .bss..swapper_pg_dir as the first thing in .bss. This will
 13  * ensure that it has .bss alignment (64K).
 14  */
 15 #define BSS_FIRST_SECTIONS *(.bss..swapper_pg_dir)
 16 
 17 #include <asm-generic/vmlinux.lds.h>
 18 #include "image-vars.h"
 19 
 20 /*
 21  * Max avaliable Page Size is 64K, so we set SectionAlignment
 22  * field of EFI application to 64K.
 23  */
 24 PECOFF_FILE_ALIGN = 0x200;
 25 PECOFF_SEGMENT_ALIGN = 0x10000;
 26 
 27 OUTPUT_ARCH(loongarch)
 28 ENTRY(kernel_entry)
 29 PHDRS {
 30         text PT_LOAD FLAGS(7);  /* RWX */
 31         note PT_NOTE FLAGS(4);  /* R__ */
 32 }
 33 
 34 jiffies  = jiffies_64;
 35 
 36 SECTIONS
 37 {
 38         . = VMLINUX_LOAD_ADDRESS;
 39 
 40         _text = .;
 41         HEAD_TEXT_SECTION
 42 
 43         . = ALIGN(PECOFF_SEGMENT_ALIGN);
 44         _stext = .;
 45         .text : {
 46                 TEXT_TEXT
 47                 SCHED_TEXT
 48                 LOCK_TEXT
 49                 KPROBES_TEXT
 50                 IRQENTRY_TEXT
 51                 SOFTIRQENTRY_TEXT
 52                 *(.fixup)
 53                 *(.gnu.warning)
 54         } :text = 0
 55         . = ALIGN(PECOFF_SEGMENT_ALIGN);
 56         _etext = .;
 57 
 58         . = ALIGN(PECOFF_SEGMENT_ALIGN);
 59         __init_begin = .;
 60         __inittext_begin = .;
 61 
 62         INIT_TEXT_SECTION(PAGE_SIZE)
 63         .exit.text : {
 64                 EXIT_TEXT
 65         }
 66 
 67         . = ALIGN(PECOFF_SEGMENT_ALIGN);
 68         __inittext_end = .;
 69 
 70         __initdata_begin = .;
 71 
 72         /*
 73          * struct alt_inst entries. From the header (alternative.h):
 74          * "Alternative instructions for different CPU types or capabilities"
 75          * Think locking instructions on spinlocks.
 76          */
 77         . = ALIGN(4);
 78         .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
 79                 __alt_instructions = .;
 80                 *(.altinstructions)
 81                 __alt_instructions_end = .;
 82         }
 83 
 84         INIT_DATA_SECTION(16)
 85         .exit.data : {
 86                 EXIT_DATA
 87         }
 88 
 89 #ifdef CONFIG_SMP
 90         PERCPU_SECTION(1 << CONFIG_L1_CACHE_SHIFT)
 91 #endif
 92 
 93         .init.bss : {
 94                 *(.init.bss)
 95         }
 96         . = ALIGN(PECOFF_SEGMENT_ALIGN);
 97         __initdata_end = .;
 98 
 99         __init_end = .;
100 
101         _sdata = .;
102         RO_DATA(4096)
103 
104         .got : ALIGN(16) { *(.got) }
105         .plt : ALIGN(16) { *(.plt) }
106         .got.plt : ALIGN(16) { *(.got.plt) }
107 
108         RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE)
109 
110         .rela.dyn : ALIGN(8) {
111                 __rela_dyn_begin = .;
112                  *(.rela.dyn) *(.rela*)
113                 __rela_dyn_end = .;
114         }
115 
116 #ifdef CONFIG_RELR
117         .relr.dyn : ALIGN(8) {
118                 __relr_dyn_begin = .;
119                  *(.relr.dyn)
120                 __relr_dyn_end = .;
121         }
122 #endif
123 
124         .data.rel : { *(.data.rel*) }
125 
126 #ifdef CONFIG_RELOCATABLE
127         . = ALIGN(8);
128         .la_abs : AT(ADDR(.la_abs) - LOAD_OFFSET) {
129                 __la_abs_begin = .;
130                 *(.la_abs)
131                 __la_abs_end = .;
132         }
133 #endif
134 
135         ORC_UNWIND_TABLE
136 
137         .sdata : {
138                 *(.sdata)
139         }
140         .edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); }
141         _edata =  .;
142 
143         BSS_SECTION(0, SZ_64K, 8)
144         . = ALIGN(PECOFF_SEGMENT_ALIGN);
145 
146         _end = .;
147 
148         STABS_DEBUG
149         DWARF_DEBUG
150         ELF_DETAILS
151 
152 #ifdef CONFIG_EFI_STUB
153         /* header symbols */
154         _kernel_entry = ABSOLUTE(kernel_entry & PHYSADDR_MASK);
155         _kernel_asize = ABSOLUTE(_end - _text);
156         _kernel_fsize = ABSOLUTE(_edata - _text);
157         _kernel_vsize = ABSOLUTE(_end - __initdata_begin);
158         _kernel_rsize = ABSOLUTE(_edata - __initdata_begin);
159 #endif
160 
161         .gptab.sdata : {
162                 *(.gptab.data)
163                 *(.gptab.sdata)
164         }
165         .gptab.sbss : {
166                 *(.gptab.bss)
167                 *(.gptab.sbss)
168         }
169 
170         DISCARDS
171         /DISCARD/ : {
172                 *(.dynamic .dynsym .dynstr .hash .gnu.hash)
173                 *(.gnu.attributes)
174                 *(.options)
175                 *(.eh_frame)
176         }
177 }

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php