| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 1 | /* | 
| Robin Getz | 96f1050 | 2009-09-24 14:11:24 +0000 | [diff] [blame] | 2 |  * Copyright 2004-2009 Analog Devices Inc. | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 3 |  * | 
| Robin Getz | 96f1050 | 2009-09-24 14:11:24 +0000 | [diff] [blame] | 4 |  * Licensed under the GPL-2 or later | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 5 |  */ | 
 | 6 |  | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 7 | #include <asm-generic/vmlinux.lds.h> | 
 | 8 | #include <asm/mem_map.h> | 
| Mike Frysinger | 520473b | 2007-07-12 12:20:20 +0800 | [diff] [blame] | 9 | #include <asm/page.h> | 
| Bernd Schmidt | 0fa63ad | 2007-07-25 10:19:59 +0800 | [diff] [blame] | 10 | #include <asm/thread_info.h> | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 11 |  | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 12 | OUTPUT_FORMAT("elf32-bfin") | 
 | 13 | ENTRY(__start) | 
 | 14 | _jiffies = _jiffies_64; | 
 | 15 |  | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 16 | SECTIONS | 
 | 17 | { | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 18 | #ifdef CONFIG_RAMKERNEL | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 19 | 	. = CONFIG_BOOT_LOAD; | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 20 | #else | 
 | 21 | 	. = CONFIG_ROM_BASE; | 
 | 22 | #endif | 
 | 23 |  | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 24 | 	/* Neither the text, ro_data or bss section need to be aligned | 
 | 25 | 	 * So pack them back to back | 
 | 26 | 	 */ | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 27 | 	.text : | 
 | 28 | 	{ | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 29 | 		__text = .; | 
 | 30 | 		_text = .; | 
 | 31 | 		__stext = .; | 
| Sam Ravnborg | 7664709 | 2007-05-13 00:31:33 +0200 | [diff] [blame] | 32 | 		TEXT_TEXT | 
| Robin Getz | b8d0c77 | 2009-03-31 13:40:52 +0000 | [diff] [blame] | 33 | #ifndef CONFIG_SCHEDULE_L1 | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 34 | 		SCHED_TEXT | 
| Robin Getz | b8d0c77 | 2009-03-31 13:40:52 +0000 | [diff] [blame] | 35 | #endif | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 36 | 		LOCK_TEXT | 
| Mike Frysinger | 1ee76d7 | 2009-06-10 04:45:29 -0400 | [diff] [blame] | 37 | 		IRQENTRY_TEXT | 
| Mike Frysinger | 27d875f | 2007-08-27 16:08:53 +0800 | [diff] [blame] | 38 | 		KPROBES_TEXT | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 39 | #ifdef CONFIG_ROMKERNEL | 
 | 40 | 		__sinittext = .; | 
 | 41 | 		INIT_TEXT | 
 | 42 | 		__einittext = .; | 
 | 43 | 		EXIT_TEXT | 
 | 44 | #endif | 
| Mike Frysinger | 27d875f | 2007-08-27 16:08:53 +0800 | [diff] [blame] | 45 | 		*(.text.*) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 46 | 		*(.fixup) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 47 |  | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 48 | #if !L1_CODE_LENGTH | 
 | 49 | 		*(.l1.text) | 
 | 50 | #endif | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 51 | 		__etext = .; | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 52 | 	} | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 53 |  | 
| Mike Frysinger | d49e8e7 | 2010-05-24 23:15:31 +0000 | [diff] [blame] | 54 | 	EXCEPTION_TABLE(4) | 
| Bernd Schmidt | 6f98529 | 2009-01-07 23:14:39 +0800 | [diff] [blame] | 55 | 	NOTES | 
 | 56 |  | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 57 | 	/* Just in case the first read only is a 32-bit access */ | 
 | 58 | 	RO_DATA(4) | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 59 | 	__rodata_end = .; | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 60 |  | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 61 | #ifdef CONFIG_ROMKERNEL | 
 | 62 | 	. = CONFIG_BOOT_LOAD; | 
 | 63 | 	.bss : AT(__rodata_end) | 
 | 64 | #else | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 65 | 	.bss : | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 66 | #endif | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 67 | 	{ | 
 | 68 | 		. = ALIGN(4); | 
 | 69 | 		___bss_start = .; | 
 | 70 | 		*(.bss .bss.*) | 
 | 71 | 		*(COMMON) | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 72 | #if !L1_DATA_A_LENGTH | 
 | 73 | 		*(.l1.bss) | 
 | 74 | #endif | 
 | 75 | #if !L1_DATA_B_LENGTH | 
 | 76 | 		*(.l1.bss.B) | 
 | 77 | #endif | 
| Mike Frysinger | 1375204 | 2008-08-06 17:10:57 +0800 | [diff] [blame] | 78 | 		. = ALIGN(4); | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 79 | 		___bss_stop = .; | 
 | 80 | 	} | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 81 |  | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 82 | #if defined(CONFIG_ROMKERNEL) | 
 | 83 | 	.data : AT(LOADADDR(.bss) + SIZEOF(.bss)) | 
 | 84 | #else | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 85 | 	.data : | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 86 | #endif | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 87 | 	{ | 
 | 88 | 		__sdata = .; | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 89 | 		/* This gets done first, so the glob doesn't suck it in */ | 
| Tim Abbott | 4a5e351 | 2009-09-24 10:36:23 -0400 | [diff] [blame] | 90 | 		CACHELINE_ALIGNED_DATA(32) | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 91 |  | 
| Sonic Zhang | b85b82d | 2008-04-24 06:13:37 +0800 | [diff] [blame] | 92 | #if !L1_DATA_A_LENGTH | 
 | 93 | 		. = ALIGN(32); | 
 | 94 | 		*(.data_l1.cacheline_aligned) | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 95 | 		*(.l1.data) | 
 | 96 | #endif | 
 | 97 | #if !L1_DATA_B_LENGTH | 
 | 98 | 		*(.l1.data.B) | 
| Sonic Zhang | b85b82d | 2008-04-24 06:13:37 +0800 | [diff] [blame] | 99 | #endif | 
| Mike Frysinger | 07aa7be | 2008-08-13 16:16:11 +0800 | [diff] [blame] | 100 | #if !L2_LENGTH | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 101 | 		. = ALIGN(32); | 
 | 102 | 		*(.data_l2.cacheline_aligned) | 
 | 103 | 		*(.l2.data) | 
 | 104 | #endif | 
| Sonic Zhang | b85b82d | 2008-04-24 06:13:37 +0800 | [diff] [blame] | 105 |  | 
| Mike Frysinger | 27d875f | 2007-08-27 16:08:53 +0800 | [diff] [blame] | 106 | 		DATA_DATA | 
| Mike Frysinger | 27d875f | 2007-08-27 16:08:53 +0800 | [diff] [blame] | 107 | 		CONSTRUCTORS | 
 | 108 |  | 
| Tim Abbott | 4a5e351 | 2009-09-24 10:36:23 -0400 | [diff] [blame] | 109 | 		INIT_TASK_DATA(THREAD_SIZE) | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 110 |  | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 111 | 		__edata = .; | 
 | 112 | 	} | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 113 | 	__data_lma = LOADADDR(.data); | 
 | 114 | 	__data_len = SIZEOF(.data); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 115 |  | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 116 | 	/* The init section should be last, so when we free it, it goes into | 
 | 117 | 	 * the general memory pool, and (hopefully) will decrease fragmentation | 
 | 118 | 	 * a tiny bit. The init section has a _requirement_ that it be | 
 | 119 | 	 * PAGE_SIZE aligned | 
 | 120 | 	 */ | 
 | 121 | 	. = ALIGN(PAGE_SIZE); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 122 | 	___init_begin = .; | 
| Mike Frysinger | 27d875f | 2007-08-27 16:08:53 +0800 | [diff] [blame] | 123 |  | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 124 | #ifdef CONFIG_RAMKERNEL | 
| Tim Abbott | 4a5e351 | 2009-09-24 10:36:23 -0400 | [diff] [blame] | 125 | 	INIT_TEXT_SECTION(PAGE_SIZE) | 
| Mike Frysinger | 70f1256 | 2009-06-07 17:18:25 -0400 | [diff] [blame] | 126 |  | 
| Jie Zhang | 0afc272 | 2010-01-05 04:22:33 +0000 | [diff] [blame] | 127 | 	/* We have to discard exit text and such at runtime, not link time, to | 
| Mike Frysinger | 70f1256 | 2009-06-07 17:18:25 -0400 | [diff] [blame] | 128 | 	 * handle embedded cross-section references (alt instructions, bug | 
| Jie Zhang | 0afc272 | 2010-01-05 04:22:33 +0000 | [diff] [blame] | 129 | 	 * table, eh_frame, etc...).  We need all of our .text up front and | 
 | 130 | 	 * .data after it for PCREL call issues. | 
| Mike Frysinger | 70f1256 | 2009-06-07 17:18:25 -0400 | [diff] [blame] | 131 | 	 */ | 
 | 132 | 	.exit.text : | 
 | 133 | 	{ | 
 | 134 | 		EXIT_TEXT | 
 | 135 | 	} | 
| Jie Zhang | 0afc272 | 2010-01-05 04:22:33 +0000 | [diff] [blame] | 136 |  | 
 | 137 | 	. = ALIGN(16); | 
 | 138 | 	INIT_DATA_SECTION(16) | 
| Tejun Heo | 0415b00 | 2011-03-24 18:50:09 +0100 | [diff] [blame] | 139 | 	PERCPU_SECTION(32) | 
| Jie Zhang | 0afc272 | 2010-01-05 04:22:33 +0000 | [diff] [blame] | 140 |  | 
| Mike Frysinger | 70f1256 | 2009-06-07 17:18:25 -0400 | [diff] [blame] | 141 | 	.exit.data : | 
 | 142 | 	{ | 
 | 143 | 		EXIT_DATA | 
 | 144 | 	} | 
 | 145 |  | 
| Tim Abbott | 4a5e351 | 2009-09-24 10:36:23 -0400 | [diff] [blame] | 146 | 	.text_l1 L1_CODE_START : AT(LOADADDR(.exit.data) + SIZEOF(.exit.data)) | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 147 | #else | 
 | 148 | 	.init.data : AT(__data_lma + __data_len) | 
 | 149 | 	{ | 
 | 150 | 		__sinitdata = .; | 
 | 151 | 		INIT_DATA | 
 | 152 | 		INIT_SETUP(16) | 
 | 153 | 		INIT_CALLS | 
 | 154 | 		CON_INITCALL | 
 | 155 | 		SECURITY_INITCALL | 
 | 156 | 		INIT_RAM_FS | 
 | 157 |  | 
| Steven Miao | 353470c | 2011-06-16 18:01:20 +0800 | [diff] [blame] | 158 | 		. = ALIGN(PAGE_SIZE); | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 159 | 		___per_cpu_load = .; | 
| Mike Frysinger | d6cb2e3 | 2011-03-31 15:40:52 -0400 | [diff] [blame] | 160 | 		PERCPU_INPUT(32) | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 161 |  | 
 | 162 | 		EXIT_DATA | 
 | 163 | 		__einitdata = .; | 
 | 164 | 	} | 
 | 165 | 	__init_data_lma = LOADADDR(.init.data); | 
 | 166 | 	__init_data_len = SIZEOF(.init.data); | 
 | 167 | 	__init_data_end = .; | 
 | 168 |  | 
 | 169 | 	.text_l1 L1_CODE_START : AT(__init_data_lma + __init_data_len) | 
 | 170 | #endif | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 171 | 	{ | 
 | 172 | 		. = ALIGN(4); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 173 | 		__stext_l1 = .; | 
| Sonic Zhang | c6345ab | 2010-08-05 07:49:26 +0000 | [diff] [blame] | 174 | 		*(.l1.text.head) | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 175 | 		*(.l1.text) | 
| Robin Getz | b8d0c77 | 2009-03-31 13:40:52 +0000 | [diff] [blame] | 176 | #ifdef CONFIG_SCHEDULE_L1 | 
 | 177 | 		SCHED_TEXT | 
 | 178 | #endif | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 179 | 		. = ALIGN(4); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 180 | 		__etext_l1 = .; | 
 | 181 | 	} | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 182 | 	__text_l1_lma = LOADADDR(.text_l1); | 
 | 183 | 	__text_l1_len = SIZEOF(.text_l1); | 
 | 184 | 	ASSERT (__text_l1_len <= L1_CODE_LENGTH, "L1 text overflow!") | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 185 |  | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 186 | 	.data_l1 L1_DATA_A_START : AT(__text_l1_lma + __text_l1_len) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 187 | 	{ | 
 | 188 | 		. = ALIGN(4); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 189 | 		__sdata_l1 = .; | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 190 | 		*(.l1.data) | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 191 | 		__edata_l1 = .; | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 192 |  | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 193 | 		. = ALIGN(32); | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 194 | 		*(.data_l1.cacheline_aligned) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 195 |  | 
 | 196 | 		. = ALIGN(4); | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 197 | 		__sbss_l1 = .; | 
 | 198 | 		*(.l1.bss) | 
 | 199 | 		. = ALIGN(4); | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 200 | 		__ebss_l1 = .; | 
 | 201 | 	} | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 202 | 	__data_l1_lma = LOADADDR(.data_l1); | 
 | 203 | 	__data_l1_len = SIZEOF(.data_l1); | 
 | 204 | 	ASSERT (__data_l1_len <= L1_DATA_A_LENGTH, "L1 data A overflow!") | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 205 |  | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 206 | 	.data_b_l1 L1_DATA_B_START : AT(__data_l1_lma + __data_l1_len) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 207 | 	{ | 
 | 208 | 		. = ALIGN(4); | 
 | 209 | 		__sdata_b_l1 = .; | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 210 | 		*(.l1.data.B) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 211 | 		__edata_b_l1 = .; | 
 | 212 |  | 
 | 213 | 		. = ALIGN(4); | 
 | 214 | 		__sbss_b_l1 = .; | 
| Mike Frysinger | bc6e0fa | 2008-04-24 06:21:25 +0800 | [diff] [blame] | 215 | 		*(.l1.bss.B) | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 216 | 		. = ALIGN(4); | 
 | 217 | 		__ebss_b_l1 = .; | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 218 | 	} | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 219 | 	__data_b_l1_lma = LOADADDR(.data_b_l1); | 
 | 220 | 	__data_b_l1_len = SIZEOF(.data_b_l1); | 
 | 221 | 	ASSERT (__data_b_l1_len <= L1_DATA_B_LENGTH, "L1 data B overflow!") | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 222 |  | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 223 | 	.text_data_l2 L2_START : AT(__data_b_l1_lma + __data_b_l1_len) | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 224 | 	{ | 
 | 225 | 		. = ALIGN(4); | 
 | 226 | 		__stext_l2 = .; | 
| Mike Frysinger | 07aa7be | 2008-08-13 16:16:11 +0800 | [diff] [blame] | 227 | 		*(.l2.text) | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 228 | 		. = ALIGN(4); | 
 | 229 | 		__etext_l2 = .; | 
 | 230 |  | 
 | 231 | 		. = ALIGN(4); | 
 | 232 | 		__sdata_l2 = .; | 
| Mike Frysinger | 07aa7be | 2008-08-13 16:16:11 +0800 | [diff] [blame] | 233 | 		*(.l2.data) | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 234 | 		__edata_l2 = .; | 
 | 235 |  | 
 | 236 | 		. = ALIGN(32); | 
 | 237 | 		*(.data_l2.cacheline_aligned) | 
 | 238 |  | 
 | 239 | 		. = ALIGN(4); | 
 | 240 | 		__sbss_l2 = .; | 
| Mike Frysinger | 07aa7be | 2008-08-13 16:16:11 +0800 | [diff] [blame] | 241 | 		*(.l2.bss) | 
| Sonic Zhang | 262c382 | 2008-07-19 15:42:41 +0800 | [diff] [blame] | 242 | 		. = ALIGN(4); | 
 | 243 | 		__ebss_l2 = .; | 
 | 244 | 	} | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 245 | 	__l2_lma = LOADADDR(.text_data_l2); | 
 | 246 | 	__l2_len = SIZEOF(.text_data_l2); | 
 | 247 | 	ASSERT (__l2_len <= L2_LENGTH, "L2 overflow!") | 
| Bernd Schmidt | 6f98529 | 2009-01-07 23:14:39 +0800 | [diff] [blame] | 248 |  | 
| Mike Frysinger | 3620805 | 2007-10-30 12:00:02 +0800 | [diff] [blame] | 249 | 	/* Force trailing alignment of our init section so that when we | 
 | 250 | 	 * free our init memory, we don't leave behind a partial page. | 
 | 251 | 	 */ | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 252 | #ifdef CONFIG_RAMKERNEL | 
| Mike Frysinger | 5cd82a6 | 2009-09-23 20:34:48 +0000 | [diff] [blame] | 253 | 	. = __l2_lma + __l2_len; | 
| Barry Song | d86bfb1 | 2010-01-07 04:11:17 +0000 | [diff] [blame] | 254 | #else | 
 | 255 | 	. = __init_data_end; | 
 | 256 | #endif | 
| Mike Frysinger | 3620805 | 2007-10-30 12:00:02 +0800 | [diff] [blame] | 257 | 	. = ALIGN(PAGE_SIZE); | 
 | 258 | 	___init_end = .; | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 259 |  | 
| Mike Frysinger | b7627ac | 2008-02-02 15:53:17 +0800 | [diff] [blame] | 260 | 	__end =.; | 
| Mike Frysinger | de6a952 | 2007-06-11 17:27:05 +0800 | [diff] [blame] | 261 |  | 
| Mike Frysinger | c11b577 | 2007-10-11 00:12:41 +0800 | [diff] [blame] | 262 | 	STABS_DEBUG | 
 | 263 |  | 
 | 264 | 	DWARF_DEBUG | 
 | 265 |  | 
| Tejun Heo | 023bf6f | 2009-07-09 11:27:40 +0900 | [diff] [blame] | 266 | 	DISCARDS | 
| Bryan Wu | 1394f03 | 2007-05-06 14:50:22 -0700 | [diff] [blame] | 267 | } |