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.2
  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		CPUIDLE_TEXT
 47		LOCK_TEXT
 48		KPROBES_TEXT
 49		IRQENTRY_TEXT
 50		SOFTIRQENTRY_TEXT
 51		*(.fixup)
 52		*(.gnu.warning)
 53	} :text = 0
 54	. = ALIGN(PECOFF_SEGMENT_ALIGN);
 55	_etext = .;
 56
 57	/*
 58	 * struct alt_inst entries. From the header (alternative.h):
 59	 * "Alternative instructions for different CPU types or capabilities"
 60	 * Think locking instructions on spinlocks.
 61	 */
 62	. = ALIGN(4);
 63	.altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
 64		__alt_instructions = .;
 65		*(.altinstructions)
 66		__alt_instructions_end = .;
 67	}
 68
 69	.got : ALIGN(16) { *(.got) }
 70	.plt : ALIGN(16) { *(.plt) }
 71	.got.plt : ALIGN(16) { *(.got.plt) }
 72
 73	. = ALIGN(PECOFF_SEGMENT_ALIGN);
 74	__init_begin = .;
 75	__inittext_begin = .;
 76
 77	INIT_TEXT_SECTION(PAGE_SIZE)
 78	.exit.text : {
 79		EXIT_TEXT
 80	}
 81
 82	. = ALIGN(PECOFF_SEGMENT_ALIGN);
 83	__inittext_end = .;
 84
 85	__initdata_begin = .;
 86
 
 
 
 
 
 
 
 
 
 
 
 
 87	INIT_DATA_SECTION(16)
 88	.exit.data : {
 89		EXIT_DATA
 90	}
 91
 92#ifdef CONFIG_SMP
 93	PERCPU_SECTION(1 << CONFIG_L1_CACHE_SHIFT)
 94#endif
 95
 96	.rela.dyn : ALIGN(8) { *(.rela.dyn) *(.rela*) }
 97
 98	.init.bss : {
 99		*(.init.bss)
100	}
101	. = ALIGN(PECOFF_SEGMENT_ALIGN);
102	__initdata_end = .;
103
104	__init_end = .;
105
106	_sdata = .;
107	RO_DATA(4096)
 
 
 
 
 
108	RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE)
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110	.sdata : {
111		*(.sdata)
112	}
113	.edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); }
114	_edata =  .;
115
116	BSS_SECTION(0, SZ_64K, 8)
117	. = ALIGN(PECOFF_SEGMENT_ALIGN);
118
119	_end = .;
120
121	STABS_DEBUG
122	DWARF_DEBUG
123	ELF_DETAILS
124
 
 
 
 
 
 
 
 
125	.gptab.sdata : {
126		*(.gptab.data)
127		*(.gptab.sdata)
128	}
129	.gptab.sbss : {
130		*(.gptab.bss)
131		*(.gptab.sbss)
132	}
133
134	DISCARDS
135	/DISCARD/ : {
 
136		*(.gnu.attributes)
137		*(.options)
138		*(.eh_frame)
139	}
140}