Merge branches 'pm-sleep' and 'pm-cpufreq'
[linux-2.6-block.git] / arch / c6x / kernel / vmlinux.lds.S
CommitLineData
c278400c
AJ
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
c278400c
AJ
40 /*
41 * This section contains data which may be shared with other
42 * cores. It needs to be a fixed offset from PAGE_OFFSET
43 * regardless of kernel configuration.
44 */
45 .virtio_ipc_dev :
46 {
47 *(.virtio_ipc_dev)
48 }
49
50 . = ALIGN(PAGE_SIZE);
06256f8f 51 __init_begin = .;
c278400c
AJ
52 .init :
53 {
c278400c
AJ
54 _sinittext = .;
55 HEAD_TEXT
56 INIT_TEXT
57 _einittext = .;
58 }
59
c278400c
AJ
60 INIT_DATA_SECTION(16)
61
62 PERCPU_SECTION(128)
63
64 . = ALIGN(PAGE_SIZE);
65 __init_end = .;
66
67 .text :
68 {
69 _text = .;
06256f8f 70 _stext = .;
c278400c
AJ
71 TEXT_TEXT
72 SCHED_TEXT
6727ad9e 73 CPUIDLE_TEXT
c278400c
AJ
74 LOCK_TEXT
75 IRQENTRY_TEXT
be7635e7 76 SOFTIRQENTRY_TEXT
c278400c
AJ
77 KPROBES_TEXT
78 *(.fixup)
79 *(.gnu.warning)
80 }
81
82 EXCEPTION_TABLE(16)
83 NOTES
84
85 RO_DATA_SECTION(PAGE_SIZE)
86 .const :
87 {
88 *(.const .const.* .gnu.linkonce.r.*)
89 *(.switch)
90 }
91
92 . = ALIGN (8) ;
93 __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET)
94 {
95 _fdt_start = . ; /* place for fdt blob */
96 *(__fdt_blob) ; /* Any link-placed DTB */
97 BYTE(0); /* section always has contents */
98 . = _fdt_start + 0x4000; /* Pad up to 16kbyte */
99 _fdt_end = . ;
100 }
101
102 _etext = .;
103
104 /*
105 * Start kernel read-write segment.
106 */
107 READWRITE_SEGMENT_START
108 _sdata = .;
109
110 .fardata : AT(ADDR(.fardata) - LOAD_OFFSET)
111 {
112 INIT_TASK_DATA(THREAD_SIZE)
113 NOSAVE_DATA
114 PAGE_ALIGNED_DATA(PAGE_SIZE)
115 CACHELINE_ALIGNED_DATA(128)
116 READ_MOSTLY_DATA(128)
117 DATA_DATA
118 CONSTRUCTORS
119 *(.data1)
120 *(.fardata .fardata.*)
121 *(.data.debug_bpt)
122 }
123
124 .neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET)
125 {
126 *(.neardata2 .neardata2.* .gnu.linkonce.s2.*)
127 *(.neardata .neardata.* .gnu.linkonce.s.*)
128 . = ALIGN(8);
129 }
130
131 _edata = .;
132
133 __bss_start = .;
134 SBSS(8)
135 BSS(8)
136 .far :
137 {
138 . = ALIGN(8);
139 *(.dynfar)
140 *(.far .far.* .gnu.linkonce.b.*)
141 . = ALIGN(8);
142 }
143 __bss_stop = .;
144
145 _end = .;
146
147 DWARF_DEBUG
148
149 /DISCARD/ :
150 {
151 EXIT_TEXT
152 EXIT_DATA
153 EXIT_CALL
154 *(.discard)
155 *(.discard.*)
156 *(.interp)
157 }
158}