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