xref: /openbmc/linux/arch/csky/kernel/vmlinux.lds.S (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
19143a935SGuo Ren/* SPDX-License-Identifier: GPL-2.0 */
29143a935SGuo Ren
39143a935SGuo Ren#include <asm/vmlinux.lds.h>
49143a935SGuo Ren#include <asm/page.h>
5f525bb2cSGuo Ren#include <asm/memory.h>
69143a935SGuo Ren
79143a935SGuo RenOUTPUT_ARCH(csky)
89143a935SGuo RenENTRY(_start)
99143a935SGuo Ren
109143a935SGuo Ren#ifndef __cskyBE__
119143a935SGuo Renjiffies = jiffies_64;
129143a935SGuo Ren#else
139143a935SGuo Renjiffies = jiffies_64 + 4;
149143a935SGuo Ren#endif
159143a935SGuo Ren
169143a935SGuo Ren#define VBR_BASE \
179143a935SGuo Ren	. = ALIGN(1024); \
189143a935SGuo Ren	vec_base = .; \
199143a935SGuo Ren	. += 512;
209143a935SGuo Ren
219143a935SGuo RenSECTIONS
229143a935SGuo Ren{
239143a935SGuo Ren	. = PAGE_OFFSET + PHYS_OFFSET_OFFSET;
249143a935SGuo Ren
25f54af50dSGuo Ren	_start = .;
269143a935SGuo Ren	HEAD_TEXT_SECTION
279143a935SGuo Ren	. = ALIGN(PAGE_SIZE);
289143a935SGuo Ren
299143a935SGuo Ren	.text : AT(ADDR(.text) - LOAD_OFFSET) {
309143a935SGuo Ren		_text = .;
31f54af50dSGuo Ren		_stext = .;
320c8a32eeSGuo Ren		VBR_BASE
339143a935SGuo Ren		IRQENTRY_TEXT
349143a935SGuo Ren		SOFTIRQENTRY_TEXT
359143a935SGuo Ren		TEXT_TEXT
369143a935SGuo Ren		SCHED_TEXT
379143a935SGuo Ren		LOCK_TEXT
389143a935SGuo Ren		KPROBES_TEXT
399143a935SGuo Ren		*(.fixup)
409143a935SGuo Ren		*(.gnu.warning)
419143a935SGuo Ren	} = 0
429143a935SGuo Ren	_etext = .;
439143a935SGuo Ren
449143a935SGuo Ren	/* __init_begin __init_end must be page aligned for free_initmem */
459143a935SGuo Ren	. = ALIGN(PAGE_SIZE);
46*01ab4649SGuo Ren	__init_begin = .;
47*01ab4649SGuo Ren	INIT_TEXT_SECTION(PAGE_SIZE)
48*01ab4649SGuo Ren	INIT_DATA_SECTION(PAGE_SIZE)
49*01ab4649SGuo Ren	PERCPU_SECTION(L1_CACHE_BYTES)
50*01ab4649SGuo Ren	. = ALIGN(PAGE_SIZE);
51*01ab4649SGuo Ren	__init_end = .;
529143a935SGuo Ren
539143a935SGuo Ren	_sdata = .;
5493240b32SKees Cook	RO_DATA(PAGE_SIZE)
55c9174047SKees Cook	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
569143a935SGuo Ren	_edata = .;
579143a935SGuo Ren
58f525bb2cSGuo Ren#ifdef CONFIG_HAVE_TCM
59f525bb2cSGuo Ren	.tcm_start : {
60f525bb2cSGuo Ren		. = ALIGN(PAGE_SIZE);
61f525bb2cSGuo Ren		__tcm_start = .;
62f525bb2cSGuo Ren	}
63f525bb2cSGuo Ren
64f525bb2cSGuo Ren	.text_data_tcm FIXADDR_TCM : AT(__tcm_start)
65f525bb2cSGuo Ren	{
66f525bb2cSGuo Ren		. = ALIGN(4);
67f525bb2cSGuo Ren		__stcm_text_data = .;
68f525bb2cSGuo Ren		*(.tcm.text)
69f525bb2cSGuo Ren		*(.tcm.rodata)
70f525bb2cSGuo Ren#ifndef CONFIG_HAVE_DTCM
71f525bb2cSGuo Ren		*(.tcm.data)
72f525bb2cSGuo Ren#endif
73f525bb2cSGuo Ren		. = ALIGN(4);
74f525bb2cSGuo Ren		__etcm_text_data = .;
75f525bb2cSGuo Ren	}
76f525bb2cSGuo Ren
77f525bb2cSGuo Ren	. = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_data_tcm);
78f525bb2cSGuo Ren
79f525bb2cSGuo Ren#ifdef CONFIG_HAVE_DTCM
80f525bb2cSGuo Ren	#define ITCM_SIZE	CONFIG_ITCM_NR_PAGES * PAGE_SIZE
81f525bb2cSGuo Ren
82f525bb2cSGuo Ren	.dtcm_start : {
83f525bb2cSGuo Ren		__dtcm_start = .;
84f525bb2cSGuo Ren	}
85f525bb2cSGuo Ren
86f525bb2cSGuo Ren	.data_tcm FIXADDR_TCM + ITCM_SIZE : AT(__dtcm_start)
87f525bb2cSGuo Ren	{
88f525bb2cSGuo Ren		. = ALIGN(4);
89f525bb2cSGuo Ren		__stcm_data = .;
90f525bb2cSGuo Ren		*(.tcm.data)
91f525bb2cSGuo Ren		. = ALIGN(4);
92f525bb2cSGuo Ren		__etcm_data = .;
93f525bb2cSGuo Ren	}
94f525bb2cSGuo Ren
95f525bb2cSGuo Ren	. = ADDR(.dtcm_start) + SIZEOF(.data_tcm);
96f525bb2cSGuo Ren
97f525bb2cSGuo Ren	.tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_tcm)) {
98f525bb2cSGuo Ren#else
99f525bb2cSGuo Ren	.tcm_end : AT(ADDR(.tcm_start) + SIZEOF(.text_data_tcm)) {
100f525bb2cSGuo Ren#endif
101f525bb2cSGuo Ren		. = ALIGN(PAGE_SIZE);
102f525bb2cSGuo Ren		__tcm_end = .;
103f525bb2cSGuo Ren	}
104f525bb2cSGuo Ren#endif
105f525bb2cSGuo Ren
1069143a935SGuo Ren	EXCEPTION_TABLE(L1_CACHE_BYTES)
1079143a935SGuo Ren	BSS_SECTION(L1_CACHE_BYTES, PAGE_SIZE, L1_CACHE_BYTES)
1089143a935SGuo Ren	_end = . ;
1099143a935SGuo Ren
1109143a935SGuo Ren	STABS_DEBUG
1119143a935SGuo Ren	DWARF_DEBUG
112c604abc3SKees Cook	ELF_DETAILS
1139143a935SGuo Ren
1149143a935SGuo Ren	DISCARDS
1159143a935SGuo Ren}
116