1/* ld script to make s390 Linux kernel
2 * Written by Martin Schwidefsky (schwidefsky@de.ibm.com)
3 */
4OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
5OUTPUT_ARCH(s390:64-bit)
6ENTRY(_start)
7SECTIONS
8{
9  . = 0x00000000;
10  _text = .;			/* Text and read-only data */
11  .text : {
12	*(.text)
13	*(.fixup)
14	*(.gnu.warning)
15	} = 0x0700
16  .rodata : { *(.rodata) }
17  .kstrtab : { *(.kstrtab) }
18
19  . = ALIGN(16);		/* Exception table */
20  __start___ex_table = .;
21  __ex_table : { *(__ex_table) }
22  __stop___ex_table = .;
23
24  __start___ksymtab = .;	/* Kernel symbol table */
25  __ksymtab : { *(__ksymtab) }
26  __stop___ksymtab = .;
27
28  __start___kallsyms = .;       /* All kernel symbols */
29  __kallsyms : { *(__kallsyms) }
30  __stop___kallsyms = .;
31
32  . = ALIGN(1048576);		/* VM shared segments are 1MB aligned */
33
34  _etext = .;			/* End of text section */
35
36  .data : {			/* Data */
37	*(.data)
38	CONSTRUCTORS
39	}
40
41  _edata = .;			/* End of data section */
42
43  . = ALIGN(16384);		/* init_task */
44  .data.init_task : { *(.data.init_task) }
45
46  . = ALIGN(4096);		/* Init code and data */
47  __init_begin = .;
48  .text.init : { *(.text.init) }
49  .data.init : { *(.data.init) }
50  . = ALIGN(4096);
51  __init_end = .;
52
53  __setup_start = .;
54  .setup.init : { *(.setup.init) }
55  __setup_end = .;
56  __initcall_start = .;
57  .initcall.init : { *(.initcall.init) }
58  __initcall_end = .;
59  . = ALIGN(4096);
60  __init_end = .;
61
62  . = ALIGN(32);
63  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
64
65  . = ALIGN(4096);
66  .data.page_aligned : { *(.data.idt) }
67
68
69  __bss_start = .;		/* BSS */
70  .bss : {
71	*(.bss)
72	}
73  _end = . ;
74
75  /* Stabs debugging sections.  */
76  .stab 0 : { *(.stab) }
77  .stabstr 0 : { *(.stabstr) }
78  .stab.excl 0 : { *(.stab.excl) }
79  .stab.exclstr 0 : { *(.stab.exclstr) }
80  .stab.index 0 : { *(.stab.index) }
81  .stab.indexstr 0 : { *(.stab.indexstr) }
82  .comment 0 : { *(.comment) }
83}
84