PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures
[linux-2.6] / arch / sparc64 / kernel / vmlinux.lds.S
1 /* ld script to make UltraLinux kernel */
2
3 #include <asm/page.h>
4 #include <asm-generic/vmlinux.lds.h>
5
6 OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
7 OUTPUT_ARCH(sparc:v9a)
8 ENTRY(_start)
9
10 jiffies = jiffies_64;
11 SECTIONS
12 {
13         swapper_low_pmd_dir = 0x0000000000402000;
14         . = 0x4000;
15         .text 0x0000000000404000 : {
16                 _text = .;
17                 TEXT_TEXT
18                 SCHED_TEXT
19                 LOCK_TEXT
20                 KPROBES_TEXT
21                 *(.gnu.warning)
22         } = 0
23         _etext = .;
24         PROVIDE (etext = .);
25
26         RO_DATA(PAGE_SIZE)
27         .data : {
28                 DATA_DATA
29                 CONSTRUCTORS
30         }
31         .data1 : {
32                 *(.data1)
33         }
34         . = ALIGN(64);
35         .data.cacheline_aligned : {
36                 *(.data.cacheline_aligned)
37         }
38         . = ALIGN(64);
39         .data.read_mostly : {
40                 *(.data.read_mostly)
41         }
42         _edata = .;
43         PROVIDE (edata = .);
44         .fixup : {
45                 *(.fixup)
46         }
47         . = ALIGN(16);
48         __ex_table : {
49                 __start___ex_table = .;
50                 *(__ex_table)
51                 __stop___ex_table = .;
52         }
53         NOTES
54
55         . = ALIGN(PAGE_SIZE);
56         .init.text : {
57                 __init_begin = .;
58                 _sinittext = .;
59                 INIT_TEXT
60                 _einittext = .;
61         }
62         .init.data : {
63                 INIT_DATA
64         }
65         . = ALIGN(16);
66         .init.setup : {
67                 __setup_start = .;
68                 *(.init.setup)
69                 __setup_end = .;
70         }
71         .initcall.init : {
72                 __initcall_start = .;
73                 INITCALLS
74                 __initcall_end = .;
75         }
76         .con_initcall.init : {
77                 __con_initcall_start = .;
78                 *(.con_initcall.init)
79                 __con_initcall_end = .;
80         }
81         SECURITY_INIT
82
83         . = ALIGN(4);
84         .tsb_ldquad_phys_patch : {
85                 __tsb_ldquad_phys_patch = .;
86                 *(.tsb_ldquad_phys_patch)
87                 __tsb_ldquad_phys_patch_end = .;
88         }
89
90         .tsb_phys_patch : {
91                 __tsb_phys_patch = .;
92                 *(.tsb_phys_patch)
93                 __tsb_phys_patch_end = .;
94         }
95
96         .cpuid_patch : {
97                 __cpuid_patch = .;
98                 *(.cpuid_patch)
99                 __cpuid_patch_end = .;
100         }
101
102         .sun4v_1insn_patch : {
103                 __sun4v_1insn_patch = .;
104                 *(.sun4v_1insn_patch)
105                 __sun4v_1insn_patch_end = .;
106         }
107         .sun4v_2insn_patch : {
108                 __sun4v_2insn_patch = .;
109                 *(.sun4v_2insn_patch)
110                 __sun4v_2insn_patch_end = .;
111         }
112
113 #ifdef CONFIG_BLK_DEV_INITRD
114         . = ALIGN(PAGE_SIZE);
115         .init.ramfs : {
116                 __initramfs_start = .;
117                 *(.init.ramfs)
118                 __initramfs_end = .;
119         }
120 #endif
121
122         PERCPU(PAGE_SIZE)
123
124         . = ALIGN(PAGE_SIZE);
125         __init_end = .;
126         __bss_start = .;
127         .sbss : {
128                 *(.sbss)
129                 *(.scommon)
130         }
131         .bss : {
132                 *(.dynbss)
133                 *(.bss)
134                 *(COMMON)
135         }
136         _end = . ;
137         PROVIDE (end = .);
138
139         /DISCARD/ : {
140                 EXIT_TEXT
141                 EXIT_DATA
142                 *(.exitcall.exit)
143         }
144
145         STABS_DEBUG
146         DWARF_DEBUG
147 }