132 lines · 2.6 KB · Assembly
RawDownload
/* ld script to make the Linux/CRIS kernel * Authors: Bjorn Wesen (bjornw@axis.com) * * It is VERY DANGEROUS to fiddle around with the symbols in this * script. It is for example quite vital that all generated sections * that are used are actually named here, otherwise the linker will * put them at the end, where the init stuff is which is FREED after * the kernel has booted. */ #include <asm-generic/vmlinux.lds.h>#include <asm/page.h> #ifdef CONFIG_ETRAX_VMEM_SIZE#define __CONFIG_ETRAX_VMEM_SIZE CONFIG_ETRAX_VMEM_SIZE#else#define __CONFIG_ETRAX_VMEM_SIZE 0#endif  jiffies = jiffies_64;SECTIONS{	. = DRAM_VIRTUAL_BASE;	dram_start = .;#ifdef CONFIG_ETRAX_ARCH_V10	ibr_start = .;#else	ebp_start = .;	/* The boot section is only necessary until the VCS top */	/* level testbench includes both flash and DRAM. */	.boot : { *(.boot) }#endif 	/* see head.S and pages reserved at the start */	. = DRAM_VIRTUAL_BASE + 0x4000; 	_text = .;			/* Text and read-only data. */	text_start = .;			/* Lots of aliases. */	_stext = .;	__stext = .;	.text : {		TEXT_TEXT		SCHED_TEXT		LOCK_TEXT		*(.fixup)		*(.text.__*)	} 	_etext = . ;			/* End of text section. */	__etext = .; 	EXCEPTION_TABLE(4) 	_sdata = .;	RODATA 	. = ALIGN (4);	___data_start = . ;	__Sdata = . ;	.data : {			/* Data */		CACHELINE_ALIGNED_DATA(32)		READ_MOSTLY_DATA(32)		DATA_DATA	}	__edata = . ;			/* End of data section. */	_edata = . ; 	INIT_TASK_DATA_SECTION(PAGE_SIZE) 	. = ALIGN(PAGE_SIZE);		/* Init code and data. */	__init_begin = .;	INIT_TEXT_SECTION(PAGE_SIZE)	.init.data : { INIT_DATA }	.init.setup : { INIT_SETUP(16) }	.initcall.init : {		INIT_CALLS	} 	.con_initcall.init : {		CON_INITCALL	}	SECURITY_INIT 	/* .exit.text is discarded at runtime, not link time,	 * to deal with references from __bug_table	 */	.exit.text : {		EXIT_TEXT	}	.exit.data : {		EXIT_DATA	} #ifdef CONFIG_ETRAX_ARCH_V10#ifdef CONFIG_BLK_DEV_INITRD	.init.ramfs : {		__initramfs_start = .;		*(.init.ramfs)		__initramfs_end = .;	}#endif#endif	__vmlinux_end = .;		/* Last address of the physical file. */#ifdef CONFIG_ETRAX_ARCH_V32	PERCPU_SECTION(32) 	.init.ramfs : {		INIT_RAM_FS	}#endif 	/*	 * We fill to the next page, so we can discard all init	 * pages without needing to consider what payload might be	 * appended to the kernel image.	 */	. = ALIGN(PAGE_SIZE); 	__init_end = .; 	__data_end = . ;		/* Move to _edata ? */	BSS_SECTION(1, 1, 1) 	. =  ALIGN (0x20);	_end = .;	__end = .; 	dram_end = dram_start + (CONFIG_ETRAX_DRAM_SIZE - __CONFIG_ETRAX_VMEM_SIZE)*1024*1024; 	DISCARDS}