| /* | 
 |  * ld script for the c6x kernel | 
 |  * | 
 |  *  Copyright (C) 2010, 2011 Texas Instruments Incorporated | 
 |  *  Mark Salter <msalter@redhat.com> | 
 |  */ | 
 | #include <asm-generic/vmlinux.lds.h> | 
 | #include <asm/thread_info.h> | 
 | #include <asm/page.h> | 
 |  | 
 | ENTRY(_c_int00) | 
 |  | 
 | #if defined(CONFIG_CPU_BIG_ENDIAN) | 
 | jiffies = jiffies_64 + 4; | 
 | #else | 
 | jiffies = jiffies_64; | 
 | #endif | 
 |  | 
 | #define	READONLY_SEGMENT_START	\ | 
 | 	. = PAGE_OFFSET; | 
 | #define	READWRITE_SEGMENT_START	\ | 
 | 	. = ALIGN(128);		\ | 
 | 	_data_lma = .; | 
 |  | 
 | SECTIONS | 
 | { | 
 | 	/* | 
 | 	 * Start kernel read only segment | 
 | 	 */ | 
 | 	READONLY_SEGMENT_START | 
 |  | 
 | 	.vectors : | 
 | 	{ | 
 | 		_vectors_start = .; | 
 | 		*(.vectors) | 
 | 		. = ALIGN(0x400); | 
 | 		_vectors_end = .; | 
 | 	} | 
 |  | 
 | 	. = ALIGN(0x1000); | 
 | 	.cmdline : | 
 | 	{ | 
 | 		*(.cmdline) | 
 | 	} | 
 |  | 
 | 	/* | 
 | 	 * This section contains data which may be shared with other | 
 | 	 * cores. It needs to be a fixed offset from PAGE_OFFSET | 
 | 	 * regardless of kernel configuration. | 
 | 	 */ | 
 | 	.virtio_ipc_dev : | 
 | 	{ | 
 | 		*(.virtio_ipc_dev) | 
 | 	} | 
 |  | 
 | 	. = ALIGN(PAGE_SIZE); | 
 | 	.init : | 
 | 	{ | 
 | 		_stext = .; | 
 | 		_sinittext = .; | 
 | 		HEAD_TEXT | 
 | 		INIT_TEXT | 
 | 		_einittext = .; | 
 | 	} | 
 |  | 
 | 	__init_begin = _stext; | 
 | 	INIT_DATA_SECTION(16) | 
 |  | 
 | 	PERCPU_SECTION(128) | 
 |  | 
 | 	. = ALIGN(PAGE_SIZE); | 
 | 	__init_end = .; | 
 |  | 
 | 	.text : | 
 | 	{ | 
 | 		_text = .; | 
 | 		TEXT_TEXT | 
 | 		SCHED_TEXT | 
 | 		LOCK_TEXT | 
 | 		IRQENTRY_TEXT | 
 | 		KPROBES_TEXT | 
 | 		*(.fixup) | 
 | 		*(.gnu.warning) | 
 | 	} | 
 |  | 
 | 	EXCEPTION_TABLE(16) | 
 | 	NOTES | 
 |  | 
 | 	RO_DATA_SECTION(PAGE_SIZE) | 
 | 	.const : | 
 | 	{ | 
 | 		*(.const .const.* .gnu.linkonce.r.*) | 
 | 		*(.switch) | 
 | 	} | 
 |  | 
 | 	. = ALIGN (8) ; | 
 | 	__fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) | 
 | 	{ | 
 | 		_fdt_start = . ;	/* place for fdt blob */ | 
 | 		*(__fdt_blob) ;		/* Any link-placed DTB */ | 
 | 		BYTE(0);		/* section always has contents */ | 
 | 	        . = _fdt_start + 0x4000;	/* Pad up to 16kbyte */ | 
 | 		_fdt_end = . ; | 
 | 	} | 
 |  | 
 | 	_etext = .; | 
 |  | 
 | 	/* | 
 | 	 * Start kernel read-write segment. | 
 | 	 */ | 
 | 	READWRITE_SEGMENT_START | 
 | 	_sdata = .; | 
 |  | 
 | 	.fardata : AT(ADDR(.fardata) - LOAD_OFFSET) | 
 | 	{ | 
 | 		INIT_TASK_DATA(THREAD_SIZE) | 
 | 		NOSAVE_DATA | 
 | 		PAGE_ALIGNED_DATA(PAGE_SIZE) | 
 | 		CACHELINE_ALIGNED_DATA(128) | 
 | 		READ_MOSTLY_DATA(128) | 
 | 		DATA_DATA | 
 | 		CONSTRUCTORS | 
 | 		*(.data1) | 
 | 		*(.fardata .fardata.*) | 
 | 		*(.data.debug_bpt) | 
 | 	} | 
 |  | 
 | 	.neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET) | 
 | 	{ | 
 | 		*(.neardata2 .neardata2.* .gnu.linkonce.s2.*) | 
 | 		*(.neardata .neardata.* .gnu.linkonce.s.*) | 
 | 		. = ALIGN(8); | 
 | 	} | 
 |  | 
 | 	_edata = .; | 
 |  | 
 | 	__bss_start = .; | 
 | 	SBSS(8) | 
 | 	BSS(8) | 
 | 	.far : | 
 | 	{ | 
 | 		. = ALIGN(8); | 
 | 		*(.dynfar) | 
 | 		*(.far .far.* .gnu.linkonce.b.*) | 
 | 		. = ALIGN(8); | 
 | 	} | 
 | 	__bss_stop = .; | 
 |  | 
 | 	_end = .; | 
 |  | 
 | 	DWARF_DEBUG | 
 |  | 
 | 	/DISCARD/ : | 
 | 	{ | 
 | 		  EXIT_TEXT | 
 | 		  EXIT_DATA | 
 | 		  EXIT_CALL | 
 | 		  *(.discard) | 
 | 		  *(.discard.*) | 
 | 		  *(.interp) | 
 | 	} | 
 | } |