OSDN Git Service

Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
[tomoyo/tomoyo-test1.git] / arch / csky / kernel / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2
3 #include <asm/vmlinux.lds.h>
4 #include <asm/page.h>
5 #include <asm/memory.h>
6
7 OUTPUT_ARCH(csky)
8 ENTRY(_start)
9
10 #ifndef __cskyBE__
11 jiffies = jiffies_64;
12 #else
13 jiffies = jiffies_64 + 4;
14 #endif
15
16 #define VBR_BASE \
17         . = ALIGN(1024); \
18         vec_base = .; \
19         . += 512;
20
21 SECTIONS
22 {
23         . = PAGE_OFFSET + PHYS_OFFSET_OFFSET;
24
25         _stext = .;
26         __init_begin = .;
27         HEAD_TEXT_SECTION
28         INIT_TEXT_SECTION(PAGE_SIZE)
29         INIT_DATA_SECTION(PAGE_SIZE)
30         PERCPU_SECTION(L1_CACHE_BYTES)
31         . = ALIGN(PAGE_SIZE);
32         __init_end = .;
33
34         .text : AT(ADDR(.text) - LOAD_OFFSET) {
35                 _text = .;
36                 IRQENTRY_TEXT
37                 SOFTIRQENTRY_TEXT
38                 TEXT_TEXT
39                 SCHED_TEXT
40                 CPUIDLE_TEXT
41                 LOCK_TEXT
42                 KPROBES_TEXT
43                 *(.fixup)
44                 *(.gnu.warning)
45         } = 0
46         _etext = .;
47
48         /* __init_begin __init_end must be page aligned for free_initmem */
49         . = ALIGN(PAGE_SIZE);
50
51
52         _sdata = .;
53         RO_DATA(PAGE_SIZE)
54         RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
55         _edata = .;
56
57 #ifdef CONFIG_HAVE_TCM
58         .tcm_start : {
59                 . = ALIGN(PAGE_SIZE);
60                 __tcm_start = .;
61         }
62
63         .text_data_tcm FIXADDR_TCM : AT(__tcm_start)
64         {
65                 . = ALIGN(4);
66                 __stcm_text_data = .;
67                 *(.tcm.text)
68                 *(.tcm.rodata)
69 #ifndef CONFIG_HAVE_DTCM
70                 *(.tcm.data)
71 #endif
72                 . = ALIGN(4);
73                 __etcm_text_data = .;
74         }
75
76         . = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_data_tcm);
77
78 #ifdef CONFIG_HAVE_DTCM
79         #define ITCM_SIZE       CONFIG_ITCM_NR_PAGES * PAGE_SIZE
80
81         .dtcm_start : {
82                 __dtcm_start = .;
83         }
84
85         .data_tcm FIXADDR_TCM + ITCM_SIZE : AT(__dtcm_start)
86         {
87                 . = ALIGN(4);
88                 __stcm_data = .;
89                 *(.tcm.data)
90                 . = ALIGN(4);
91                 __etcm_data = .;
92         }
93
94         . = ADDR(.dtcm_start) + SIZEOF(.data_tcm);
95
96         .tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_tcm)) {
97 #else
98         .tcm_end : AT(ADDR(.tcm_start) + SIZEOF(.text_data_tcm)) {
99 #endif
100                 . = ALIGN(PAGE_SIZE);
101                 __tcm_end = .;
102         }
103 #endif
104
105         EXCEPTION_TABLE(L1_CACHE_BYTES)
106         BSS_SECTION(L1_CACHE_BYTES, PAGE_SIZE, L1_CACHE_BYTES)
107         VBR_BASE
108         _end = . ;
109
110         STABS_DEBUG
111         DWARF_DEBUG
112
113         DISCARDS
114 }