• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* ld script to make FRV Linux kernel
2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
3 */
4OUTPUT_FORMAT("elf32-frv", "elf32-frv", "elf32-frv")
5OUTPUT_ARCH(frv)
6ENTRY(_start)
7
8#include <asm-generic/vmlinux.lds.h>
9#include <asm/processor.h>
10#include <asm/page.h>
11#include <asm/cache.h>
12#include <asm/thread_info.h>
13
14jiffies = jiffies_64 + 4;
15
16__page_offset = CONFIG_PAGE_OFFSET;	/* start of area covered by struct pages */
17__kernel_image_start = __page_offset;	/* address at which kernel image resides */
18
19SECTIONS
20{
21  . = __kernel_image_start;
22
23  /* discardable initialisation code and data */
24  . = ALIGN(PAGE_SIZE);			/* Init code and data */
25  __init_begin = .;
26
27  _sinittext = .;
28  .init.text : {
29	HEAD_TEXT
30#ifndef CONFIG_DEBUG_INFO
31	INIT_TEXT
32	EXIT_TEXT
33	EXIT_DATA
34	*(.exitcall.exit)
35#endif
36  }
37  _einittext = .;
38
39  INIT_DATA_SECTION(8)
40  PERCPU_SECTION(L1_CACHE_BYTES)
41
42  . = ALIGN(PAGE_SIZE);
43  __init_end = .;
44
45  .trap : {
46	/* trap table management - read entry-table.S before modifying */
47	. = ALIGN(8192);
48	__trap_tables = .;
49	*(.trap.user)
50	*(.trap.kernel)
51	. = ALIGN(4096);
52	*(.trap.break)
53  }
54
55  /* Text and read-only data */
56  . = ALIGN(4);
57  _text = .;
58  _stext = .;
59  .text : {
60	*(.text..start)
61	*(.text..entry)
62	*(.text..break)
63	*(.text..tlbmiss)
64	TEXT_TEXT
65	SCHED_TEXT
66	LOCK_TEXT
67#ifdef CONFIG_DEBUG_INFO
68	INIT_TEXT
69	EXIT_TEXT
70	*(.exitcall.exit)
71#endif
72	*(.fixup)
73	*(.gnu.warning)
74	*(.exitcall.exit)
75	} = 0x9090
76
77  _etext = .;			/* End of text section */
78
79  RODATA
80
81  .rodata : {
82	*(.trap.vector)
83
84	/* this clause must not be modified - the ordering and adjacency are imperative */
85	__trap_fixup_tables = .;
86	*(.trap.fixup.user .trap.fixup.kernel)
87
88	}
89
90  EXCEPTION_TABLE(8)
91
92  _sdata = .;
93  .data : {			/* Data */
94	INIT_TASK_DATA(THREAD_SIZE)
95	CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
96	DATA_DATA
97	*(.data.*)
98	EXIT_DATA
99	CONSTRUCTORS
100	}
101
102  _edata = .;			/* End of data section */
103
104  /* GP section */
105  . = ALIGN(L1_CACHE_BYTES);
106  _gp = . + 2048;
107  PROVIDE (gp = _gp);
108
109  .sdata : { *(.sdata .sdata.*) }
110
111  /* BSS */
112  . = ALIGN(L1_CACHE_BYTES);
113  __bss_start = .;
114
115  .sbss		: { *(.sbss .sbss.*) }
116  .bss		: { *(.bss .bss.*) }
117  .bss..stack	: { *(.bss) }
118
119  __bss_stop = .;
120  _end = . ;
121  . = ALIGN(PAGE_SIZE);
122  __kernel_image_end = .;
123
124  STABS_DEBUG
125  DWARF_DEBUG
126
127  .comment 0 : { *(.comment) }
128
129  DISCARDS
130}
131
132__kernel_image_size_no_bss = __bss_start - __kernel_image_start;
133