xref: /openbmc/linux/arch/csky/kernel/vmlinux.lds.S (revision 2791f47d)
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#include <asm/vmlinux.lds.h>
4#include <asm/page.h>
5#include <asm/memory.h>
6
7OUTPUT_ARCH(csky)
8ENTRY(_start)
9
10#ifndef __cskyBE__
11jiffies = jiffies_64;
12#else
13jiffies = jiffies_64 + 4;
14#endif
15
16#define VBR_BASE \
17	. = ALIGN(1024); \
18	vec_base = .; \
19	. += 512;
20
21SECTIONS
22{
23	. = PAGE_OFFSET + PHYS_OFFSET_OFFSET;
24
25	_stext = .;
26	__init_begin = .;
27	HEAD_TEXT_SECTION
28	INIT_TEXT_SECTION(PAGE_SIZE)
29	INIT_DATA_SECTION(PAGE_SIZE)
30	PERCPU_SECTION(L1_CACHE_BYTES)
31	. = ALIGN(PAGE_SIZE);
32	__init_end = .;
33
34	.text : AT(ADDR(.text) - LOAD_OFFSET) {
35		_text = .;
36		IRQENTRY_TEXT
37		SOFTIRQENTRY_TEXT
38		TEXT_TEXT
39		SCHED_TEXT
40		CPUIDLE_TEXT
41		LOCK_TEXT
42		KPROBES_TEXT
43		*(.fixup)
44		*(.gnu.warning)
45	} = 0
46	_etext = .;
47
48	/* __init_begin __init_end must be page aligned for free_initmem */
49	. = ALIGN(PAGE_SIZE);
50
51
52	_sdata = .;
53	RO_DATA(PAGE_SIZE)
54	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
55	_edata = .;
56
57#ifdef CONFIG_HAVE_TCM
58	.tcm_start : {
59		. = ALIGN(PAGE_SIZE);
60		__tcm_start = .;
61	}
62
63	.text_data_tcm FIXADDR_TCM : AT(__tcm_start)
64	{
65		. = ALIGN(4);
66		__stcm_text_data = .;
67		*(.tcm.text)
68		*(.tcm.rodata)
69#ifndef CONFIG_HAVE_DTCM
70		*(.tcm.data)
71#endif
72		. = ALIGN(4);
73		__etcm_text_data = .;
74	}
75
76	. = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_data_tcm);
77
78#ifdef CONFIG_HAVE_DTCM
79	#define ITCM_SIZE	CONFIG_ITCM_NR_PAGES * PAGE_SIZE
80
81	.dtcm_start : {
82		__dtcm_start = .;
83	}
84
85	.data_tcm FIXADDR_TCM + ITCM_SIZE : AT(__dtcm_start)
86	{
87		. = ALIGN(4);
88		__stcm_data = .;
89		*(.tcm.data)
90		. = ALIGN(4);
91		__etcm_data = .;
92	}
93
94	. = ADDR(.dtcm_start) + SIZEOF(.data_tcm);
95
96	.tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_tcm)) {
97#else
98	.tcm_end : AT(ADDR(.tcm_start) + SIZEOF(.text_data_tcm)) {
99#endif
100		. = ALIGN(PAGE_SIZE);
101		__tcm_end = .;
102	}
103#endif
104
105	EXCEPTION_TABLE(L1_CACHE_BYTES)
106	BSS_SECTION(L1_CACHE_BYTES, PAGE_SIZE, L1_CACHE_BYTES)
107	VBR_BASE
108	_end = . ;
109
110	STABS_DEBUG
111	DWARF_DEBUG
112	ELF_DETAILS
113
114	DISCARDS
115}
116