GNU Linux-libre 4.14.266-gnu1
[releases.git] / arch / metag / kernel / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* ld script to make Meta Linux kernel */
3
4 #include <asm/thread_info.h>
5 #include <asm/page.h>
6 #include <asm/cache.h>
7
8 #include <asm-generic/vmlinux.lds.h>
9
10 OUTPUT_FORMAT("elf32-metag", "elf32-metag", "elf32-metag")
11 OUTPUT_ARCH(metag)
12 ENTRY(__start)
13
14 _jiffies = _jiffies_64;
15 SECTIONS
16 {
17   . = CONFIG_PAGE_OFFSET;
18   _text = .;
19   __text = .;
20   __stext = .;
21   HEAD_TEXT_SECTION
22   .text : {
23         TEXT_TEXT
24         SCHED_TEXT
25         CPUIDLE_TEXT
26         LOCK_TEXT
27         KPROBES_TEXT
28         IRQENTRY_TEXT
29         SOFTIRQENTRY_TEXT
30         *(.text.*)
31         *(.gnu.warning)
32         }
33
34   __etext = .;                  /* End of text section */
35
36   __sdata = .;
37   RO_DATA_SECTION(PAGE_SIZE)
38   RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
39   __edata = .;                  /* End of data section */
40
41   EXCEPTION_TABLE(16)
42   NOTES
43
44   . = ALIGN(PAGE_SIZE);         /* Init code and data */
45   ___init_begin = .;
46   INIT_TEXT_SECTION(PAGE_SIZE)
47   INIT_DATA_SECTION(16)
48
49   .init.arch.info : {
50           ___arch_info_begin = .;
51           *(.arch.info.init)
52           ___arch_info_end = .;
53   }
54
55   PERCPU_SECTION(L1_CACHE_BYTES)
56
57   ___init_end = .;
58
59   BSS_SECTION(0, PAGE_SIZE, 0)
60
61   __end = .;
62
63   . = ALIGN(PAGE_SIZE);
64   __heap_start = .;
65
66   DWARF_DEBUG
67
68   /* When something in the kernel is NOT compiled as a module, the
69    * module cleanup code and data are put into these segments.  Both
70    * can then be thrown away, as cleanup code is never called unless
71    * it's a module.
72    */
73   DISCARDS
74 }