xref: /openbmc/linux/arch/riscv/kernel/vmlinux.lds.S (revision c604abc3f6e3030f3a3022b184ed7d3780c34d30)
150acfb2bSThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */
2fbe934d6SPalmer Dabbelt/*
3fbe934d6SPalmer Dabbelt * Copyright (C) 2012 Regents of the University of California
4fbe934d6SPalmer Dabbelt * Copyright (C) 2017 SiFive
5fbe934d6SPalmer Dabbelt */
6fbe934d6SPalmer Dabbelt
7fbe934d6SPalmer Dabbelt#define LOAD_OFFSET PAGE_OFFSET
8fbe934d6SPalmer Dabbelt#include <asm/vmlinux.lds.h>
9fbe934d6SPalmer Dabbelt#include <asm/page.h>
10fbe934d6SPalmer Dabbelt#include <asm/cache.h>
11fbe934d6SPalmer Dabbelt#include <asm/thread_info.h>
1200cb41d5SZong Li#include <asm/set_memory.h>
13fbe934d6SPalmer Dabbelt
14e011995eSAtish Patra#include <linux/sizes.h>
15fbe934d6SPalmer DabbeltOUTPUT_ARCH(riscv)
16fbe934d6SPalmer DabbeltENTRY(_start)
17fbe934d6SPalmer Dabbelt
18fbe934d6SPalmer Dabbeltjiffies = jiffies_64;
19fbe934d6SPalmer Dabbelt
20fbe934d6SPalmer DabbeltSECTIONS
21fbe934d6SPalmer Dabbelt{
22fbe934d6SPalmer Dabbelt	/* Beginning of code and text segment */
23fbe934d6SPalmer Dabbelt	. = LOAD_OFFSET;
24fbe934d6SPalmer Dabbelt	_start = .;
256184358dSGuo Ren	_stext = .;
26fbe934d6SPalmer Dabbelt	HEAD_TEXT_SECTION
27e011995eSAtish Patra	. = ALIGN(PAGE_SIZE);
28e011995eSAtish Patra
29e011995eSAtish Patra	__init_begin = .;
30fbe934d6SPalmer Dabbelt	INIT_TEXT_SECTION(PAGE_SIZE)
31fbe934d6SPalmer Dabbelt	INIT_DATA_SECTION(16)
32335b1390SDamien Le Moal	. = ALIGN(8);
33335b1390SDamien Le Moal	__soc_early_init_table : {
34335b1390SDamien Le Moal		__soc_early_init_table_start = .;
35335b1390SDamien Le Moal		KEEP(*(__soc_early_init_table))
36335b1390SDamien Le Moal		__soc_early_init_table_end = .;
37335b1390SDamien Le Moal	}
382d268251SPalmer Dabbelt	__soc_builtin_dtb_table : {
392d268251SPalmer Dabbelt		__soc_builtin_dtb_table_start = .;
402d268251SPalmer Dabbelt		KEEP(*(__soc_builtin_dtb_table))
412d268251SPalmer Dabbelt		__soc_builtin_dtb_table_end = .;
422d268251SPalmer Dabbelt	}
43fbe934d6SPalmer Dabbelt	/* we have to discard exit text and such at runtime, not link time */
44fbe934d6SPalmer Dabbelt	.exit.text :
45fbe934d6SPalmer Dabbelt	{
46fbe934d6SPalmer Dabbelt		EXIT_TEXT
47fbe934d6SPalmer Dabbelt	}
48fbe934d6SPalmer Dabbelt	.exit.data :
49fbe934d6SPalmer Dabbelt	{
50fbe934d6SPalmer Dabbelt		EXIT_DATA
51fbe934d6SPalmer Dabbelt	}
52fbe934d6SPalmer Dabbelt	PERCPU_SECTION(L1_CACHE_BYTES)
53fbe934d6SPalmer Dabbelt	__init_end = .;
54fbe934d6SPalmer Dabbelt
5500cb41d5SZong Li	. = ALIGN(SECTION_ALIGN);
56fbe934d6SPalmer Dabbelt	.text : {
57fbe934d6SPalmer Dabbelt		_text = .;
58fbe934d6SPalmer Dabbelt		TEXT_TEXT
59fbe934d6SPalmer Dabbelt		SCHED_TEXT
60fbe934d6SPalmer Dabbelt		CPUIDLE_TEXT
61fbe934d6SPalmer Dabbelt		LOCK_TEXT
62fbe934d6SPalmer Dabbelt		KPROBES_TEXT
63fbe934d6SPalmer Dabbelt		ENTRY_TEXT
64fbe934d6SPalmer Dabbelt		IRQENTRY_TEXT
658ad8b727SNick Hu		SOFTIRQENTRY_TEXT
66fbe934d6SPalmer Dabbelt		*(.fixup)
67fbe934d6SPalmer Dabbelt		_etext = .;
68fbe934d6SPalmer Dabbelt	}
69fbe934d6SPalmer Dabbelt
70fbe934d6SPalmer Dabbelt	/* Start of data section */
71fbe934d6SPalmer Dabbelt	_sdata = .;
7200cb41d5SZong Li	RO_DATA(SECTION_ALIGN)
73fbe934d6SPalmer Dabbelt	.srodata : {
74fbe934d6SPalmer Dabbelt		*(.srodata*)
75fbe934d6SPalmer Dabbelt	}
76fbe934d6SPalmer Dabbelt
77bd3d914dSZong Li	EXCEPTION_TABLE(0x10)
78bd3d914dSZong Li
7900cb41d5SZong Li	. = ALIGN(SECTION_ALIGN);
80bd3d914dSZong Li	_data = .;
81bd3d914dSZong Li
82c9174047SKees Cook	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
83fbe934d6SPalmer Dabbelt	.sdata : {
84fbe934d6SPalmer Dabbelt		__global_pointer$ = . + 0x800;
85fbe934d6SPalmer Dabbelt		*(.sdata*)
86fbe934d6SPalmer Dabbelt		/* End of data section */
87fbe934d6SPalmer Dabbelt		_edata = .;
88fbe934d6SPalmer Dabbelt	}
89fbe934d6SPalmer Dabbelt
9041fb9d54SPalmer Dabbelt	BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0)
9141fb9d54SPalmer Dabbelt
92fbe934d6SPalmer Dabbelt	.rel.dyn : {
93fbe934d6SPalmer Dabbelt		*(.rel.dyn*)
94fbe934d6SPalmer Dabbelt	}
95fbe934d6SPalmer Dabbelt
96fbe934d6SPalmer Dabbelt	_end = .;
97fbe934d6SPalmer Dabbelt
98fbe934d6SPalmer Dabbelt	STABS_DEBUG
99fbe934d6SPalmer Dabbelt	DWARF_DEBUG
100*c604abc3SKees Cook	ELF_DETAILS
101fbe934d6SPalmer Dabbelt
102fbe934d6SPalmer Dabbelt	DISCARDS
103fbe934d6SPalmer Dabbelt}
104