xref: /openbmc/linux/arch/sparc/kernel/vmlinux.lds.S (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds/* ld script to make SparcLinux kernel */
2*1da177e4SLinus Torvalds
3*1da177e4SLinus Torvalds#include <asm-generic/vmlinux.lds.h>
4*1da177e4SLinus Torvalds
5*1da177e4SLinus TorvaldsOUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
6*1da177e4SLinus TorvaldsOUTPUT_ARCH(sparc)
7*1da177e4SLinus TorvaldsENTRY(_start)
8*1da177e4SLinus Torvaldsjiffies = jiffies_64 + 4;
9*1da177e4SLinus TorvaldsSECTIONS
10*1da177e4SLinus Torvalds{
11*1da177e4SLinus Torvalds  . = 0x10000 + SIZEOF_HEADERS;
12*1da177e4SLinus Torvalds  .text 0xf0004000 :
13*1da177e4SLinus Torvalds  {
14*1da177e4SLinus Torvalds    *(.text)
15*1da177e4SLinus Torvalds    SCHED_TEXT
16*1da177e4SLinus Torvalds    LOCK_TEXT
17*1da177e4SLinus Torvalds    *(.gnu.warning)
18*1da177e4SLinus Torvalds  } =0
19*1da177e4SLinus Torvalds  _etext = .;
20*1da177e4SLinus Torvalds  PROVIDE (etext = .);
21*1da177e4SLinus Torvalds  RODATA
22*1da177e4SLinus Torvalds  .data    :
23*1da177e4SLinus Torvalds  {
24*1da177e4SLinus Torvalds    *(.data)
25*1da177e4SLinus Torvalds    CONSTRUCTORS
26*1da177e4SLinus Torvalds  }
27*1da177e4SLinus Torvalds  .data1   : { *(.data1) }
28*1da177e4SLinus Torvalds  _edata  =  .;
29*1da177e4SLinus Torvalds  PROVIDE (edata = .);
30*1da177e4SLinus Torvalds  __start___fixup = .;
31*1da177e4SLinus Torvalds  .fixup   : { *(.fixup) }
32*1da177e4SLinus Torvalds  __stop___fixup = .;
33*1da177e4SLinus Torvalds  __start___ex_table = .;
34*1da177e4SLinus Torvalds  __ex_table : { *(__ex_table) }
35*1da177e4SLinus Torvalds  __stop___ex_table = .;
36*1da177e4SLinus Torvalds
37*1da177e4SLinus Torvalds  . = ALIGN(4096);
38*1da177e4SLinus Torvalds  __init_begin = .;
39*1da177e4SLinus Torvalds  .init.text : {
40*1da177e4SLinus Torvalds	_sinittext = .;
41*1da177e4SLinus Torvalds	*(.init.text)
42*1da177e4SLinus Torvalds	_einittext = .;
43*1da177e4SLinus Torvalds  }
44*1da177e4SLinus Torvalds  __init_text_end = .;
45*1da177e4SLinus Torvalds  .init.data : { *(.init.data) }
46*1da177e4SLinus Torvalds  . = ALIGN(16);
47*1da177e4SLinus Torvalds  __setup_start = .;
48*1da177e4SLinus Torvalds  .init.setup : { *(.init.setup) }
49*1da177e4SLinus Torvalds  __setup_end = .;
50*1da177e4SLinus Torvalds  __initcall_start = .;
51*1da177e4SLinus Torvalds  .initcall.init : {
52*1da177e4SLinus Torvalds	*(.initcall1.init)
53*1da177e4SLinus Torvalds	*(.initcall2.init)
54*1da177e4SLinus Torvalds	*(.initcall3.init)
55*1da177e4SLinus Torvalds	*(.initcall4.init)
56*1da177e4SLinus Torvalds	*(.initcall5.init)
57*1da177e4SLinus Torvalds	*(.initcall6.init)
58*1da177e4SLinus Torvalds	*(.initcall7.init)
59*1da177e4SLinus Torvalds  }
60*1da177e4SLinus Torvalds  __initcall_end = .;
61*1da177e4SLinus Torvalds  __con_initcall_start = .;
62*1da177e4SLinus Torvalds  .con_initcall.init : { *(.con_initcall.init) }
63*1da177e4SLinus Torvalds  __con_initcall_end = .;
64*1da177e4SLinus Torvalds  SECURITY_INIT
65*1da177e4SLinus Torvalds  . = ALIGN(4096);
66*1da177e4SLinus Torvalds  __initramfs_start = .;
67*1da177e4SLinus Torvalds  .init.ramfs : { *(.init.ramfs) }
68*1da177e4SLinus Torvalds  __initramfs_end = .;
69*1da177e4SLinus Torvalds  . = ALIGN(32);
70*1da177e4SLinus Torvalds  __per_cpu_start = .;
71*1da177e4SLinus Torvalds  .data.percpu  : { *(.data.percpu) }
72*1da177e4SLinus Torvalds  __per_cpu_end = .;
73*1da177e4SLinus Torvalds  . = ALIGN(4096);
74*1da177e4SLinus Torvalds  __init_end = .;
75*1da177e4SLinus Torvalds  . = ALIGN(32);
76*1da177e4SLinus Torvalds  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
77*1da177e4SLinus Torvalds
78*1da177e4SLinus Torvalds  __bss_start = .;
79*1da177e4SLinus Torvalds  .sbss      : { *(.sbss) *(.scommon) }
80*1da177e4SLinus Torvalds  .bss       :
81*1da177e4SLinus Torvalds  {
82*1da177e4SLinus Torvalds   *(.dynbss)
83*1da177e4SLinus Torvalds   *(.bss)
84*1da177e4SLinus Torvalds   *(COMMON)
85*1da177e4SLinus Torvalds  }
86*1da177e4SLinus Torvalds  _end = . ;
87*1da177e4SLinus Torvalds  PROVIDE (end = .);
88*1da177e4SLinus Torvalds  /* Stabs debugging sections.  */
89*1da177e4SLinus Torvalds  .stab 0 : { *(.stab) }
90*1da177e4SLinus Torvalds  .stabstr 0 : { *(.stabstr) }
91*1da177e4SLinus Torvalds  .stab.excl 0 : { *(.stab.excl) }
92*1da177e4SLinus Torvalds  .stab.exclstr 0 : { *(.stab.exclstr) }
93*1da177e4SLinus Torvalds  .stab.index 0 : { *(.stab.index) }
94*1da177e4SLinus Torvalds  .stab.indexstr 0 : { *(.stab.indexstr) }
95*1da177e4SLinus Torvalds  .comment 0 : { *(.comment) }
96*1da177e4SLinus Torvalds  .debug          0 : { *(.debug) }
97*1da177e4SLinus Torvalds  .debug_srcinfo  0 : { *(.debug_srcinfo) }
98*1da177e4SLinus Torvalds  .debug_aranges  0 : { *(.debug_aranges) }
99*1da177e4SLinus Torvalds  .debug_pubnames 0 : { *(.debug_pubnames) }
100*1da177e4SLinus Torvalds  .debug_sfnames  0 : { *(.debug_sfnames) }
101*1da177e4SLinus Torvalds  .line           0 : { *(.line) }
102*1da177e4SLinus Torvalds  /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
103*1da177e4SLinus Torvalds}
104