Linux Audio

Check our new training course

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