nmi_backtrace: generate one-line reports for idle cpus
[cascardo/linux.git] / arch / c6x / kernel / vmlinux.lds.S
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
11 ENTRY(_c_int00)
12
13 #if defined(CONFIG_CPU_BIG_ENDIAN)
14 jiffies = jiffies_64 + 4;
15 #else
16 jiffies = 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
25 SECTIONS
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         /*
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);
51         __init_begin = .;
52         .init :
53         {
54                 _sinittext = .;
55                 HEAD_TEXT
56                 INIT_TEXT
57                 _einittext = .;
58         }
59
60         INIT_DATA_SECTION(16)
61
62         PERCPU_SECTION(128)
63
64         . = ALIGN(PAGE_SIZE);
65         __init_end = .;
66
67         .text :
68         {
69                 _text = .;
70                 _stext = .;
71                 TEXT_TEXT
72                 SCHED_TEXT
73                 CPUIDLE_TEXT
74                 LOCK_TEXT
75                 IRQENTRY_TEXT
76                 SOFTIRQENTRY_TEXT
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 }