aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r--arch/sparc64/kernel/Makefile2
-rw-r--r--arch/sparc64/kernel/vmlinux.lds.S177
2 files changed, 2 insertions, 177 deletions
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile
index b3e0b986bef8..416eb9bff484 100644
--- a/arch/sparc64/kernel/Makefile
+++ b/arch/sparc64/kernel/Makefile
@@ -7,7 +7,7 @@ EXTRA_CFLAGS := -Werror
7 7
8CFLAGS_REMOVE_ftrace.o = -pg 8CFLAGS_REMOVE_ftrace.o = -pg
9 9
10extra-y := head.o init_task.o vmlinux.lds 10extra-y := head.o init_task.o ../../sparc/kernel/vmlinux.lds
11 11
12obj-y := process.o setup.o cpu.o idprom.o reboot.o \ 12obj-y := process.o setup.o cpu.o idprom.o reboot.o \
13 traps.o auxio.o una_asm.o sysfs.o iommu.o \ 13 traps.o auxio.o una_asm.o sysfs.o iommu.o \
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 4bfbeffb7320..4e8becb80112 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -1,176 +1 @@
1/* ld script for sparc32/sparc64 kernel */ #include "../../sparc/kernel/vmlinux.lds.S"
2
3#include <asm-generic/vmlinux.lds.h>
4#include <asm/page.h>
5
6#ifdef CONFIG_SPARC32
7#define INITIAL_ADDRESS 0x10000 + SIZEOF_HEADERS
8#define TEXTSTART 0xf0004000
9
10#define SMP_CACHE_BYTES_SHIFT 5
11
12#else
13#define SMP_CACHE_BYTES_SHIFT 6
14#define INITIAL_ADDRESS 0x4000
15#define TEXTSTART 0x0000000000404000
16
17#endif
18
19#define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT)
20
21#ifdef CONFIG_SPARC32
22OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
23OUTPUT_ARCH(sparc)
24ENTRY(_start)
25jiffies = jiffies_64 + 4;
26#else
27/* sparc64 */
28OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
29OUTPUT_ARCH(sparc:v9a)
30ENTRY(_start)
31jiffies = jiffies_64;
32#endif
33
34SECTIONS
35{
36 /* swapper_low_pmd_dir is sparc64 only */
37 swapper_low_pmd_dir = 0x0000000000402000;
38 . = INITIAL_ADDRESS;
39 .text TEXTSTART :
40 {
41 _text = .;
42 *(.text.head)
43 TEXT_TEXT
44 SCHED_TEXT
45 LOCK_TEXT
46 KPROBES_TEXT
47 *(.gnu.warning)
48 } = 0
49 _etext = .;
50 PROVIDE (etext = .);
51
52 RO_DATA(PAGE_SIZE)
53 .data : {
54 DATA_DATA
55 CONSTRUCTORS
56 }
57 .data1 : {
58 *(.data1)
59 }
60 . = ALIGN(SMP_CACHE_BYTES);
61 .data.cacheline_aligned : {
62 *(.data.cacheline_aligned)
63 }
64 . = ALIGN(SMP_CACHE_BYTES);
65 .data.read_mostly : {
66 *(.data.read_mostly)
67 }
68 _edata = .;
69 PROVIDE (edata = .);
70 .fixup : {
71 __start___fixup = .;
72 *(.fixup)
73 __stop___fixup = .;
74 }
75 . = ALIGN(16);
76 __ex_table : {
77 __start___ex_table = .;
78 *(__ex_table)
79 __stop___ex_table = .;
80 }
81 NOTES
82
83 . = ALIGN(PAGE_SIZE);
84 .init.text : {
85 __init_begin = .;
86 _sinittext = .;
87 INIT_TEXT
88 _einittext = .;
89 }
90 __init_text_end = .;
91 .init.data : {
92 INIT_DATA
93 }
94 . = ALIGN(16);
95 .init.setup : {
96 __setup_start = .;
97 *(.init.setup)
98 __setup_end = .;
99 }
100 .initcall.init : {
101 __initcall_start = .;
102 INITCALLS
103 __initcall_end = .;
104 }
105 .con_initcall.init : {
106 __con_initcall_start = .;
107 *(.con_initcall.init)
108 __con_initcall_end = .;
109 }
110 SECURITY_INIT
111
112 . = ALIGN(4);
113 .tsb_ldquad_phys_patch : {
114 __tsb_ldquad_phys_patch = .;
115 *(.tsb_ldquad_phys_patch)
116 __tsb_ldquad_phys_patch_end = .;
117 }
118
119 .tsb_phys_patch : {
120 __tsb_phys_patch = .;
121 *(.tsb_phys_patch)
122 __tsb_phys_patch_end = .;
123 }
124
125 .cpuid_patch : {
126 __cpuid_patch = .;
127 *(.cpuid_patch)
128 __cpuid_patch_end = .;
129 }
130
131 .sun4v_1insn_patch : {
132 __sun4v_1insn_patch = .;
133 *(.sun4v_1insn_patch)
134 __sun4v_1insn_patch_end = .;
135 }
136 .sun4v_2insn_patch : {
137 __sun4v_2insn_patch = .;
138 *(.sun4v_2insn_patch)
139 __sun4v_2insn_patch_end = .;
140 }
141
142#ifdef CONFIG_BLK_DEV_INITRD
143 . = ALIGN(PAGE_SIZE);
144 .init.ramfs : {
145 __initramfs_start = .;
146 *(.init.ramfs)
147 __initramfs_end = .;
148 }
149#endif
150
151 PERCPU(PAGE_SIZE)
152
153 . = ALIGN(PAGE_SIZE);
154 __init_end = .;
155 __bss_start = .;
156 .sbss : {
157 *(.sbss)
158 *(.scommon)
159 }
160 .bss : {
161 *(.dynbss)
162 *(.bss)
163 *(COMMON)
164 }
165 _end = . ;
166 PROVIDE (end = .);
167
168 /DISCARD/ : {
169 EXIT_TEXT
170 EXIT_DATA
171 *(.exitcall.exit)
172 }
173
174 STABS_DEBUG
175 DWARF_DEBUG
176}