Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arc/kernel/vmlinux.lds.S
26424 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
/*
3
* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
4
*/
5
6
#include <asm-generic/vmlinux.lds.h>
7
#include <asm/cache.h>
8
#include <asm/page.h>
9
#include <asm/thread_info.h>
10
11
OUTPUT_ARCH(arc)
12
ENTRY(res_service)
13
14
#ifdef CONFIG_CPU_BIG_ENDIAN
15
jiffies = jiffies_64 + 4;
16
#else
17
jiffies = jiffies_64;
18
#endif
19
20
SECTIONS
21
{
22
/*
23
* ICCM starts at 0x8000_0000. So if kernel is relocated to some other
24
* address, make sure peripheral at 0x8z doesn't clash with ICCM
25
* Essentially vector is also in ICCM.
26
*/
27
28
. = CONFIG_LINUX_LINK_BASE;
29
30
_int_vec_base_lds = .;
31
.vector : {
32
*(.vector)
33
. = ALIGN(PAGE_SIZE);
34
}
35
36
#ifdef CONFIG_ARC_HAS_ICCM
37
.text.arcfp : {
38
*(.text.arcfp)
39
. = ALIGN(CONFIG_ARC_ICCM_SZ * 1024);
40
}
41
#endif
42
43
/*
44
* The reason for having a separate subsection .init.ramfs is to
45
* prevent objdump from including it in kernel dumps
46
*
47
* Reason for having .init.ramfs above .init is to make sure that the
48
* binary blob is tucked away to one side, reducing the displacement
49
* between .init.text and .text, avoiding any possible relocation
50
* errors because of calls from .init.text to .text
51
* Yes such calls do exist. e.g.
52
* decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )
53
*/
54
55
__init_begin = .;
56
57
.init.ramfs : { INIT_RAM_FS }
58
59
. = ALIGN(PAGE_SIZE);
60
61
HEAD_TEXT_SECTION
62
INIT_TEXT_SECTION(L1_CACHE_BYTES)
63
64
/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
65
.init.data : {
66
INIT_DATA
67
INIT_SETUP(L1_CACHE_BYTES)
68
INIT_CALLS
69
CON_INITCALL
70
}
71
72
.init.arch.info : {
73
__arch_info_begin = .;
74
*(.arch.info.init)
75
__arch_info_end = .;
76
}
77
78
PERCPU_SECTION(L1_CACHE_BYTES)
79
80
. = ALIGN(PAGE_SIZE);
81
__init_end = .;
82
83
.text : {
84
_text = .;
85
_stext = .;
86
TEXT_TEXT
87
SCHED_TEXT
88
LOCK_TEXT
89
KPROBES_TEXT
90
IRQENTRY_TEXT
91
SOFTIRQENTRY_TEXT
92
*(.fixup)
93
*(.gnu.warning)
94
}
95
EXCEPTION_TABLE(L1_CACHE_BYTES)
96
_etext = .;
97
98
_sdata = .;
99
RO_DATA(PAGE_SIZE)
100
101
/*
102
* 1. this is .data essentially
103
* 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned
104
*/
105
RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
106
107
_edata = .;
108
109
BSS_SECTION(4, 4, 4)
110
111
#ifdef CONFIG_ARC_DW2_UNWIND
112
. = ALIGN(PAGE_SIZE);
113
.eh_frame : {
114
__start_unwind = .;
115
*(.eh_frame)
116
__end_unwind = .;
117
}
118
#else
119
/DISCARD/ : { *(.eh_frame) }
120
#endif
121
122
. = ALIGN(PAGE_SIZE);
123
_end = . ;
124
125
STABS_DEBUG
126
ELF_DETAILS
127
DISCARDS
128
129
.arcextmap 0 : {
130
*(.gnu.linkonce.arcextmap.*)
131
*(.arcextmap.*)
132
}
133
134
#ifndef CONFIG_DEBUG_INFO
135
/DISCARD/ : { *(.debug_frame) }
136
/DISCARD/ : { *(.debug_aranges) }
137
/DISCARD/ : { *(.debug_pubnames) }
138
/DISCARD/ : { *(.debug_info) }
139
/DISCARD/ : { *(.debug_abbrev) }
140
/DISCARD/ : { *(.debug_line) }
141
/DISCARD/ : { *(.debug_str) }
142
/DISCARD/ : { *(.debug_loc) }
143
/DISCARD/ : { *(.debug_macinfo) }
144
/DISCARD/ : { *(.debug_ranges) }
145
#endif
146
147
#ifdef CONFIG_ARC_HAS_DCCM
148
. = CONFIG_ARC_DCCM_BASE;
149
__arc_dccm_base = .;
150
.data.arcfp : {
151
*(.data.arcfp)
152
}
153
. = ALIGN(CONFIG_ARC_DCCM_SZ * 1024);
154
#endif
155
}
156
157