aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc64/kernel/vmlinux.lds.S')
-rw-r--r--arch/sparc64/kernel/vmlinux.lds.S45
1 files changed, 37 insertions, 8 deletions
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 01f809617e5e..4bfbeffb7320 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -1,19 +1,45 @@
1/* ld script to make UltraLinux kernel */ 1/* ld script for sparc32/sparc64 kernel */
2 2
3#include <asm/page.h>
4#include <asm-generic/vmlinux.lds.h> 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)
5 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 */
6OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") 28OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
7OUTPUT_ARCH(sparc:v9a) 29OUTPUT_ARCH(sparc:v9a)
8ENTRY(_start) 30ENTRY(_start)
9
10jiffies = jiffies_64; 31jiffies = jiffies_64;
32#endif
33
11SECTIONS 34SECTIONS
12{ 35{
36 /* swapper_low_pmd_dir is sparc64 only */
13 swapper_low_pmd_dir = 0x0000000000402000; 37 swapper_low_pmd_dir = 0x0000000000402000;
14 . = 0x4000; 38 . = INITIAL_ADDRESS;
15 .text 0x0000000000404000 : { 39 .text TEXTSTART :
40 {
16 _text = .; 41 _text = .;
42 *(.text.head)
17 TEXT_TEXT 43 TEXT_TEXT
18 SCHED_TEXT 44 SCHED_TEXT
19 LOCK_TEXT 45 LOCK_TEXT
@@ -24,25 +50,27 @@ SECTIONS
24 PROVIDE (etext = .); 50 PROVIDE (etext = .);
25 51
26 RO_DATA(PAGE_SIZE) 52 RO_DATA(PAGE_SIZE)
27 .data : { 53 .data : {
28 DATA_DATA 54 DATA_DATA
29 CONSTRUCTORS 55 CONSTRUCTORS
30 } 56 }
31 .data1 : { 57 .data1 : {
32 *(.data1) 58 *(.data1)
33 } 59 }
34 . = ALIGN(64); 60 . = ALIGN(SMP_CACHE_BYTES);
35 .data.cacheline_aligned : { 61 .data.cacheline_aligned : {
36 *(.data.cacheline_aligned) 62 *(.data.cacheline_aligned)
37 } 63 }
38 . = ALIGN(64); 64 . = ALIGN(SMP_CACHE_BYTES);
39 .data.read_mostly : { 65 .data.read_mostly : {
40 *(.data.read_mostly) 66 *(.data.read_mostly)
41 } 67 }
42 _edata = .; 68 _edata = .;
43 PROVIDE (edata = .); 69 PROVIDE (edata = .);
44 .fixup : { 70 .fixup : {
71 __start___fixup = .;
45 *(.fixup) 72 *(.fixup)
73 __stop___fixup = .;
46 } 74 }
47 . = ALIGN(16); 75 . = ALIGN(16);
48 __ex_table : { 76 __ex_table : {
@@ -59,6 +87,7 @@ SECTIONS
59 INIT_TEXT 87 INIT_TEXT
60 _einittext = .; 88 _einittext = .;
61 } 89 }
90 __init_text_end = .;
62 .init.data : { 91 .init.data : {
63 INIT_DATA 92 INIT_DATA
64 } 93 }