blob: 481861764deb16f4805522090f3f9406d2b4ad4e [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* ld script to make UltraLinux kernel */
2
Sam Ravnborg4096b462007-05-29 21:29:00 +02003#include <asm/page.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -07004#include <asm-generic/vmlinux.lds.h>
5
6OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
7OUTPUT_ARCH(sparc:v9a)
8ENTRY(_start)
9
10jiffies = jiffies_64;
11SECTIONS
12{
David S. Miller56425302005-09-25 16:46:57 -070013 swapper_low_pmd_dir = 0x0000000000402000;
Linus Torvalds1da177e2005-04-16 15:20:36 -070014 . = 0x4000;
15 .text 0x0000000000404000 :
16 {
Eric W. Biedermanfd593d12006-12-07 02:14:04 +010017 _text = .;
Sam Ravnborg76647092007-05-13 00:31:33 +020018 TEXT_TEXT
Linus Torvalds1da177e2005-04-16 15:20:36 -070019 SCHED_TEXT
20 LOCK_TEXT
Prasanna S Panchamukhi05e14cb2005-09-06 15:19:30 -070021 KPROBES_TEXT
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 *(.gnu.warning)
23 } =0
24 _etext = .;
25 PROVIDE (etext = .);
26
Sam Ravnborg4096b462007-05-29 21:29:00 +020027 RO_DATA(PAGE_SIZE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070028
29 .data :
30 {
Sam Ravnborgca967252007-05-17 13:38:44 +020031 DATA_DATA
Linus Torvalds1da177e2005-04-16 15:20:36 -070032 CONSTRUCTORS
33 }
34 .data1 : { *(.data1) }
35 . = ALIGN(64);
36 .data.cacheline_aligned : { *(.data.cacheline_aligned) }
David S. Millerd369ddd2005-07-10 15:45:11 -070037 . = ALIGN(64);
38 .data.read_mostly : { *(.data.read_mostly) }
Linus Torvalds1da177e2005-04-16 15:20:36 -070039 _edata = .;
40 PROVIDE (edata = .);
41 .fixup : { *(.fixup) }
42
43 . = ALIGN(16);
44 __start___ex_table = .;
45 __ex_table : { *(__ex_table) }
46 __stop___ex_table = .;
47
Sam Ravnborg4096b462007-05-29 21:29:00 +020048 . = ALIGN(PAGE_SIZE);
Linus Torvalds1da177e2005-04-16 15:20:36 -070049 __init_begin = .;
50 .init.text : {
51 _sinittext = .;
52 *(.init.text)
53 _einittext = .;
54 }
55 .init.data : { *(.init.data) }
56 . = ALIGN(16);
57 __setup_start = .;
58 .init.setup : { *(.init.setup) }
59 __setup_end = .;
60 __initcall_start = .;
61 .initcall.init : {
Andrew Morton61ce1ef2006-10-27 11:41:44 -070062 INITCALLS
Linus Torvalds1da177e2005-04-16 15:20:36 -070063 }
64 __initcall_end = .;
65 __con_initcall_start = .;
66 .con_initcall.init : { *(.con_initcall.init) }
67 __con_initcall_end = .;
68 SECURITY_INIT
David S. Miller517af332006-02-01 15:55:21 -080069 . = ALIGN(4);
David S. Millerd257d5d2006-02-06 23:44:37 -080070 __tsb_ldquad_phys_patch = .;
71 .tsb_ldquad_phys_patch : { *(.tsb_ldquad_phys_patch) }
72 __tsb_ldquad_phys_patch_end = .;
David S. Miller517af332006-02-01 15:55:21 -080073 __tsb_phys_patch = .;
74 .tsb_phys_patch : { *(.tsb_phys_patch) }
75 __tsb_phys_patch_end = .;
David S. Miller92704a12006-02-26 23:27:19 -080076 __cpuid_patch = .;
77 .cpuid_patch : { *(.cpuid_patch) }
78 __cpuid_patch_end = .;
David S. Millerdf7d6ae2006-02-07 00:00:16 -080079 __sun4v_1insn_patch = .;
80 .sun4v_1insn_patch : { *(.sun4v_1insn_patch) }
81 __sun4v_1insn_patch_end = .;
82 __sun4v_2insn_patch = .;
83 .sun4v_2insn_patch : { *(.sun4v_2insn_patch) }
84 __sun4v_2insn_patch_end = .;
Jean-Paul Saman67d38222007-02-10 01:44:44 -080085
86#ifdef CONFIG_BLK_DEV_INITRD
Sam Ravnborg4096b462007-05-29 21:29:00 +020087 . = ALIGN(PAGE_SIZE);
Linus Torvalds1da177e2005-04-16 15:20:36 -070088 __initramfs_start = .;
89 .init.ramfs : { *(.init.ramfs) }
90 __initramfs_end = .;
Jean-Paul Saman67d38222007-02-10 01:44:44 -080091#endif
92
Fenghua Yu5fb7dc32007-07-19 01:48:12 -070093 PERCPU(PAGE_SIZE)
94
Sam Ravnborg4096b462007-05-29 21:29:00 +020095 . = ALIGN(PAGE_SIZE);
Linus Torvalds1da177e2005-04-16 15:20:36 -070096 __init_end = .;
97 __bss_start = .;
98 .sbss : { *(.sbss) *(.scommon) }
99 .bss :
100 {
101 *(.dynbss)
102 *(.bss)
103 *(COMMON)
104 }
105 _end = . ;
106 PROVIDE (end = .);
Linus Torvalds1da177e2005-04-16 15:20:36 -0700107 /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
David S. Millerd5784b52005-12-28 13:22:54 -0800108
109 STABS_DEBUG
110
111 DWARF_DEBUG
Linus Torvalds1da177e2005-04-16 15:20:36 -0700112}