summaryrefslogtreecommitdiff
path: root/arch/metag/kernel/vmlinux.lds.S
blob: e12055e88bfe5e55b6092dbf3cf95dd63eb08cdd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/* ld script to make Meta Linux kernel */

#include <asm/thread_info.h>
#include <asm/page.h>
#include <asm/cache.h>

#include <asm-generic/vmlinux.lds.h>

OUTPUT_FORMAT("elf32-metag", "elf32-metag", "elf32-metag")
OUTPUT_ARCH(metag)
ENTRY(__start)

_jiffies = _jiffies_64;
SECTIONS
{
  . = CONFIG_PAGE_OFFSET;
  _text = .;
  __text = .;
  __stext = .;
  HEAD_TEXT_SECTION
  .text : {
	TEXT_TEXT
	SCHED_TEXT
	LOCK_TEXT
	KPROBES_TEXT
	IRQENTRY_TEXT
	*(.text.*)
	*(.gnu.warning)
	}

  __etext = .;			/* End of text section */

  __sdata = .;
  RO_DATA_SECTION(PAGE_SIZE)
  RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
  __edata = .;			/* End of data section */

  EXCEPTION_TABLE(16)
  NOTES

  . = ALIGN(PAGE_SIZE);		/* Init code and data */
  ___init_begin = .;
  INIT_TEXT_SECTION(PAGE_SIZE)
  INIT_DATA_SECTION(16)

  .init.arch.info : {
	  ___arch_info_begin = .;
	  *(.arch.info.init)
	  ___arch_info_end = .;
  }

  PERCPU_SECTION(L1_CACHE_BYTES)

  ___init_end = .;

  BSS_SECTION(0, PAGE_SIZE, 0)

  __end = .;

  . = ALIGN(PAGE_SIZE);
  __heap_start = .;

  DWARF_DEBUG

  /* When something in the kernel is NOT compiled as a module, the
   * module cleanup code and data are put into these segments.  Both
   * can then be thrown away, as cleanup code is never called unless
   * it's a module.
   */
  DISCARDS
}