Catalin Marinasarm64: Build infrastructure8c2c3df14 years agoHistory
126 lines · 2.2 KB · Assembly
RawDownload
/* * ld script to make ARM Linux kernel * taken from the i386 version by Russell King * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz> */ #include <asm-generic/vmlinux.lds.h>#include <asm/thread_info.h>#include <asm/memory.h>#include <asm/page.h> #define ARM_EXIT_KEEP(x)#define ARM_EXIT_DISCARD(x)	x OUTPUT_ARCH(aarch64)ENTRY(stext) jiffies = jiffies_64; SECTIONS{	/*	 * XXX: The linker does not define how output sections are	 * assigned to input sections when there are multiple statements	 * matching the same input section name.  There is no documented	 * order of matching.	 */	/DISCARD/ : {		ARM_EXIT_DISCARD(EXIT_TEXT)		ARM_EXIT_DISCARD(EXIT_DATA)		EXIT_CALL		*(.discard)		*(.discard.*)	} 	. = PAGE_OFFSET + TEXT_OFFSET; 	.head.text : {		_text = .;		HEAD_TEXT	}	.text : {			/* Real text segment		*/		_stext = .;		/* Text and read-only data	*/			*(.smp.pen.text)			__exception_text_start = .;			*(.exception.text)			__exception_text_end = .;			IRQENTRY_TEXT			TEXT_TEXT			SCHED_TEXT			LOCK_TEXT			*(.fixup)			*(.gnu.warning)		. = ALIGN(16);		*(.got)			/* Global offset table		*/	} 	RO_DATA(PAGE_SIZE) 	_etext = .;			/* End of text and rodata section */ 	. = ALIGN(PAGE_SIZE);	__init_begin = .; 	INIT_TEXT_SECTION(8)	.exit.text : {		ARM_EXIT_KEEP(EXIT_TEXT)	}	. = ALIGN(16);	.init.data : {		INIT_DATA		INIT_SETUP(16)		INIT_CALLS		CON_INITCALL		SECURITY_INITCALL		INIT_RAM_FS	}	.exit.data : {		ARM_EXIT_KEEP(EXIT_DATA)	} 	PERCPU_SECTION(64) 	__init_end = .;	. = ALIGN(THREAD_SIZE);	__data_loc = .; 	.data : AT(__data_loc) {		_data = .;		/* address in memory */		_sdata = .; 		/*		 * first, the init task union, aligned		 * to an 8192 byte boundary.		 */		INIT_TASK_DATA(THREAD_SIZE)		NOSAVE_DATA		CACHELINE_ALIGNED_DATA(64)		READ_MOSTLY_DATA(64) 		/*		 * The exception fixup table (might need resorting at runtime)		 */		. = ALIGN(32);		__start___ex_table = .;		*(__ex_table)		__stop___ex_table = .; 		/*		 * and the usual data section		 */		DATA_DATA		CONSTRUCTORS 		_edata = .;	}	_edata_loc = __data_loc + SIZEOF(.data); 	NOTES 	BSS_SECTION(0, 0, 0)	_end = .; 	STABS_DEBUG	.comment 0 : { *(.comment) }}