1/* 2 * ld script for the c6x kernel 3 * 4 * Copyright (C) 2010, 2011 Texas Instruments Incorporated 5 * Mark Salter <msalter@redhat.com> 6 */ 7#include <asm-generic/vmlinux.lds.h> 8#include <asm/thread_info.h> 9#include <asm/page.h> 10 11ENTRY(_c_int00) 12 13#if defined(CONFIG_CPU_BIG_ENDIAN) 14jiffies = jiffies_64 + 4; 15#else 16jiffies = jiffies_64; 17#endif 18 19#define READONLY_SEGMENT_START \ 20 . = PAGE_OFFSET; 21#define READWRITE_SEGMENT_START \ 22 . = ALIGN(128); \ 23 _data_lma = .; 24 25SECTIONS 26{ 27 /* 28 * Start kernel read only segment 29 */ 30 READONLY_SEGMENT_START 31 32 .vectors : 33 { 34 _vectors_start = .; 35 *(.vectors) 36 . = ALIGN(0x400); 37 _vectors_end = .; 38 } 39 40 . = ALIGN(0x1000); 41 .cmdline : 42 { 43 *(.cmdline) 44 } 45 46 /* 47 * This section contains data which may be shared with other 48 * cores. It needs to be a fixed offset from PAGE_OFFSET 49 * regardless of kernel configuration. 50 */ 51 .virtio_ipc_dev : 52 { 53 *(.virtio_ipc_dev) 54 } 55 56 . = ALIGN(PAGE_SIZE); 57 __init_begin = .; 58 .init : 59 { 60 _sinittext = .; 61 HEAD_TEXT 62 INIT_TEXT 63 _einittext = .; 64 } 65 66 INIT_DATA_SECTION(16) 67 68 PERCPU_SECTION(128) 69 70 . = ALIGN(PAGE_SIZE); 71 __init_end = .; 72 73 .text : 74 { 75 _text = .; 76 _stext = .; 77 TEXT_TEXT 78 SCHED_TEXT 79 LOCK_TEXT 80 IRQENTRY_TEXT 81 KPROBES_TEXT 82 *(.fixup) 83 *(.gnu.warning) 84 } 85 86 EXCEPTION_TABLE(16) 87 NOTES 88 89 RO_DATA_SECTION(PAGE_SIZE) 90 .const : 91 { 92 *(.const .const.* .gnu.linkonce.r.*) 93 *(.switch) 94 } 95 96 . = ALIGN (8) ; 97 __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) 98 { 99 _fdt_start = . ; /* place for fdt blob */ 100 *(__fdt_blob) ; /* Any link-placed DTB */ 101 BYTE(0); /* section always has contents */ 102 . = _fdt_start + 0x4000; /* Pad up to 16kbyte */ 103 _fdt_end = . ; 104 } 105 106 _etext = .; 107 108 /* 109 * Start kernel read-write segment. 110 */ 111 READWRITE_SEGMENT_START 112 _sdata = .; 113 114 .fardata : AT(ADDR(.fardata) - LOAD_OFFSET) 115 { 116 INIT_TASK_DATA(THREAD_SIZE) 117 NOSAVE_DATA 118 PAGE_ALIGNED_DATA(PAGE_SIZE) 119 CACHELINE_ALIGNED_DATA(128) 120 READ_MOSTLY_DATA(128) 121 DATA_DATA 122 CONSTRUCTORS 123 *(.data1) 124 *(.fardata .fardata.*) 125 *(.data.debug_bpt) 126 } 127 128 .neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET) 129 { 130 *(.neardata2 .neardata2.* .gnu.linkonce.s2.*) 131 *(.neardata .neardata.* .gnu.linkonce.s.*) 132 . = ALIGN(8); 133 } 134 135 _edata = .; 136 137 __bss_start = .; 138 SBSS(8) 139 BSS(8) 140 .far : 141 { 142 . = ALIGN(8); 143 *(.dynfar) 144 *(.far .far.* .gnu.linkonce.b.*) 145 . = ALIGN(8); 146 } 147 __bss_stop = .; 148 149 _end = .; 150 151 DWARF_DEBUG 152 153 /DISCARD/ : 154 { 155 EXIT_TEXT 156 EXIT_DATA 157 EXIT_CALL 158 *(.discard) 159 *(.discard.*) 160 *(.interp) 161 } 162} 163