[SPARC64]: Massively simplify VIO device layer and support hot add/remove.
[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   {
17     _text = .;
18     TEXT_TEXT
19     SCHED_TEXT
20     LOCK_TEXT
21     KPROBES_TEXT
22     *(.gnu.warning)
23   } =0
24   _etext = .;
25   PROVIDE (etext = .);
26
27   RO_DATA(PAGE_SIZE)
28
29   .data    :
30   {
31     DATA_DATA
32     CONSTRUCTORS
33   }
34   .data1   : { *(.data1) }
35   . = ALIGN(64);
36   .data.cacheline_aligned : { *(.data.cacheline_aligned) }
37   . = ALIGN(64);
38   .data.read_mostly : { *(.data.read_mostly) }
39   _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
48   . = ALIGN(PAGE_SIZE);
49   __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 : {
62         INITCALLS
63   }
64   __initcall_end = .;
65   __con_initcall_start = .;
66   .con_initcall.init : { *(.con_initcall.init) }
67   __con_initcall_end = .;
68   SECURITY_INIT
69   . = ALIGN(4);
70   __tsb_ldquad_phys_patch = .;
71   .tsb_ldquad_phys_patch : { *(.tsb_ldquad_phys_patch) }
72   __tsb_ldquad_phys_patch_end = .;
73   __tsb_phys_patch = .;
74   .tsb_phys_patch : { *(.tsb_phys_patch) }
75   __tsb_phys_patch_end = .;
76   __cpuid_patch = .;
77   .cpuid_patch : { *(.cpuid_patch) }
78   __cpuid_patch_end = .;
79   __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 = .;
85
86 #ifdef CONFIG_BLK_DEV_INITRD
87   . = ALIGN(PAGE_SIZE);
88   __initramfs_start = .;
89   .init.ramfs : { *(.init.ramfs) }
90   __initramfs_end = .;
91 #endif
92
93   . = ALIGN(PAGE_SIZE);
94   __per_cpu_start = .;
95   .data.percpu  : { *(.data.percpu) }
96   __per_cpu_end = .;
97   . = ALIGN(PAGE_SIZE);
98   __init_end = .;
99   __bss_start = .;
100   .sbss      : { *(.sbss) *(.scommon) }
101   .bss       :
102   {
103    *(.dynbss)
104    *(.bss)
105    *(COMMON)
106   }
107   _end = . ;
108   PROVIDE (end = .);
109   /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
110
111   STABS_DEBUG
112
113   DWARF_DEBUG
114 }