blob: f3586e31ed1eccb585dd01849c501b4aeb7a4411 [file] [log] [blame]
Thomas Gleixner50acfb22019-05-29 07:18:00 -07001/* SPDX-License-Identifier: GPL-2.0-only */
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -07002/*
3 * Copyright (C) 2012 Regents of the University of California
4 * Copyright (C) 2017 SiFive
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -07005 */
6
7#define LOAD_OFFSET PAGE_OFFSET
8#include <asm/vmlinux.lds.h>
9#include <asm/page.h>
10#include <asm/cache.h>
11#include <asm/thread_info.h>
Zong Li00cb41d2020-03-10 00:55:40 +080012#include <asm/set_memory.h>
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070013
Atish Patrae0119952020-03-17 18:11:39 -070014#include <linux/sizes.h>
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070015OUTPUT_ARCH(riscv)
16ENTRY(_start)
17
18jiffies = jiffies_64;
19
20SECTIONS
21{
22 /* Beginning of code and text segment */
23 . = LOAD_OFFSET;
24 _start = .;
Guo Ren61843582020-06-27 13:57:06 +000025 _stext = .;
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070026 HEAD_TEXT_SECTION
Atish Patrae0119952020-03-17 18:11:39 -070027 . = ALIGN(PAGE_SIZE);
28
29 __init_begin = .;
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070030 INIT_TEXT_SECTION(PAGE_SIZE)
31 INIT_DATA_SECTION(16)
Damien Le Moal335b1392020-03-16 09:47:38 +090032 . = ALIGN(8);
33 __soc_early_init_table : {
34 __soc_early_init_table_start = .;
35 KEEP(*(__soc_early_init_table))
36 __soc_early_init_table_end = .;
37 }
Palmer Dabbelt2d268252020-04-14 13:43:24 +090038 __soc_builtin_dtb_table : {
39 __soc_builtin_dtb_table_start = .;
40 KEEP(*(__soc_builtin_dtb_table))
41 __soc_builtin_dtb_table_end = .;
42 }
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070043 /* we have to discard exit text and such at runtime, not link time */
44 .exit.text :
45 {
46 EXIT_TEXT
47 }
48 .exit.data :
49 {
50 EXIT_DATA
51 }
52 PERCPU_SECTION(L1_CACHE_BYTES)
53 __init_end = .;
54
Zong Li00cb41d2020-03-10 00:55:40 +080055 . = ALIGN(SECTION_ALIGN);
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070056 .text : {
57 _text = .;
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070058 TEXT_TEXT
59 SCHED_TEXT
60 CPUIDLE_TEXT
61 LOCK_TEXT
62 KPROBES_TEXT
63 ENTRY_TEXT
64 IRQENTRY_TEXT
Nick Hu8ad8b722020-01-06 10:38:32 -080065 SOFTIRQENTRY_TEXT
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070066 *(.fixup)
67 _etext = .;
68 }
69
70 /* Start of data section */
71 _sdata = .;
Zong Li00cb41d2020-03-10 00:55:40 +080072 RO_DATA(SECTION_ALIGN)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070073 .srodata : {
74 *(.srodata*)
75 }
76
Zong Libd3d9142020-03-10 00:55:39 +080077 EXCEPTION_TABLE(0x10)
78
Zong Li00cb41d2020-03-10 00:55:40 +080079 . = ALIGN(SECTION_ALIGN);
Zong Libd3d9142020-03-10 00:55:39 +080080 _data = .;
81
Kees Cookc9174042019-10-29 14:13:35 -070082 RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070083 .sdata : {
84 __global_pointer$ = . + 0x800;
85 *(.sdata*)
86 /* End of data section */
87 _edata = .;
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070088 }
89
Palmer Dabbelt41fb9d52019-02-08 09:11:08 -080090 BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0)
91
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070092 .rel.dyn : {
93 *(.rel.dyn*)
94 }
95
Palmer Dabbeltfbe934d2017-07-10 18:08:08 -070096 _end = .;
97
98 STABS_DEBUG
99 DWARF_DEBUG
100
101 DISCARDS
102}