174 lines · 3.1 KB · Assembly
RawDownload
/* SPDX-License-Identifier: GPL-2.0-only *//* * Copyright (C) 2012 Regents of the University of California * Copyright (C) 2017 SiFive */ #define RO_EXCEPTION_TABLE_ALIGN	4#define RUNTIME_DISCARD_EXIT #include <asm/pgtable.h>#define LOAD_OFFSET KERNEL_LINK_ADDR #include <asm/vmlinux.lds.h>#include <asm/page.h>#include <asm/cache.h>#include <asm/thread_info.h>#include <asm/set_memory.h>#include "image-vars.h" #include <linux/sizes.h>OUTPUT_ARCH(riscv)ENTRY(_start) jiffies = jiffies_64; SECTIONS{	/* Beginning of code and text segment */	. = LOAD_OFFSET;	_start = .;	HEAD_TEXT_SECTION	. = ALIGN(PAGE_SIZE); 	.text : {		_text = .;		_stext = .;		TEXT_TEXT		SCHED_TEXT		LOCK_TEXT		KPROBES_TEXT		ENTRY_TEXT		IRQENTRY_TEXT		SOFTIRQENTRY_TEXT		_etext = .;	} 	. = ALIGN(SECTION_ALIGN);	__init_begin = .;	__init_text_begin = .;	.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) ALIGN(SECTION_ALIGN) { \		_sinittext = .;						\		INIT_TEXT						\		_einittext = .;						\	} 	. = ALIGN(8);	__soc_early_init_table : {		__soc_early_init_table_start = .;		KEEP(*(__soc_early_init_table))		__soc_early_init_table_end = .;	}	__soc_builtin_dtb_table : {		__soc_builtin_dtb_table_start = .;		KEEP(*(__soc_builtin_dtb_table))		__soc_builtin_dtb_table_end = .;	}	/* we have to discard exit text and such at runtime, not link time */	__exittext_begin = .;	.exit.text :	{		EXIT_TEXT	}	__exittext_end = .; 	__init_text_end = .;	. = ALIGN(SECTION_ALIGN);#ifdef CONFIG_EFI	. = ALIGN(PECOFF_SECTION_ALIGNMENT);	__pecoff_text_end = .;#endif	/* Start of init data section */	__init_data_begin = .;	INIT_DATA_SECTION(16) 	.init.pi : {		KEEP(*(.init.pi*))	} 	.init.bss : {		KEEP(*(.init.bss*))	/* from the EFI stub */	}	.exit.data :	{		EXIT_DATA	} 	RUNTIME_CONST_VARIABLES 	PERCPU_SECTION(L1_CACHE_BYTES) 	.rel.dyn : {		*(.rel.dyn*)	} 	.rela.dyn : ALIGN(8) {		__rela_dyn_start = .;		*(.rela .rela*)		__rela_dyn_end = .;	} 	__init_data_end = .; 	. = ALIGN(8);	.alternative : {		__alt_start = .;		KEEP(*(.alternative))		__alt_end = .;	}	__init_end = .; 	/* Start of data section */	_sdata = .;	RO_DATA(SECTION_ALIGN)	.srodata : {		*(.srodata*)	} 	. = ALIGN(SECTION_ALIGN);	_data = .; 	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_ALIGN)	.sdata : {		__global_pointer$ = . + 0x800;		*(.sdata*)	} 	.got : { *(.got*) } #ifdef CONFIG_RELOCATABLE	.data.rel : { *(.data.rel*) }	.plt : { *(.plt) }	.dynamic : { *(.dynamic) }	.dynsym : { *(.dynsym) }	.dynstr : { *(.dynstr) }	.hash : { *(.hash) }	.gnu.hash : { *(.gnu.hash) }#endif #ifdef CONFIG_EFI	.pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); }	__pecoff_data_raw_size = ABSOLUTE(. - __pecoff_text_end);	__pecoff_data_raw_end = ABSOLUTE(.);#endif 	/* End of data section */	_edata = .; 	BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0) #ifdef CONFIG_EFI	. = ALIGN(PECOFF_SECTION_ALIGNMENT);	__pecoff_data_virt_size = ABSOLUTE(. - __pecoff_text_end);	__pecoff_data_virt_end = ABSOLUTE(.);#endif	_end = .; 	STABS_DEBUG	DWARF_DEBUG	MODINFO	ELF_DETAILS	.riscv.attributes 0 : { *(.riscv.attributes) } 	DISCARDS}