diff options
Diffstat (limited to 'arch/sparc/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/sparc/kernel/vmlinux.lds.S | 99 |
1 files changed, 20 insertions, 79 deletions
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index 4bfbeffb7320..5b7e69a8c32f 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S @@ -1,55 +1,27 @@ -/* ld script for sparc32/sparc64 kernel */ +/* ld script to make SparcLinux kernel */ #include <asm-generic/vmlinux.lds.h> #include <asm/page.h> -#ifdef CONFIG_SPARC32 -#define INITIAL_ADDRESS 0x10000 + SIZEOF_HEADERS -#define TEXTSTART 0xf0004000 - -#define SMP_CACHE_BYTES_SHIFT 5 - -#else -#define SMP_CACHE_BYTES_SHIFT 6 -#define INITIAL_ADDRESS 0x4000 -#define TEXTSTART 0x0000000000404000 - -#endif - -#define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) - -#ifdef CONFIG_SPARC32 OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") OUTPUT_ARCH(sparc) ENTRY(_start) jiffies = jiffies_64 + 4; -#else -/* sparc64 */ -OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") -OUTPUT_ARCH(sparc:v9a) -ENTRY(_start) -jiffies = jiffies_64; -#endif - SECTIONS { - /* swapper_low_pmd_dir is sparc64 only */ - swapper_low_pmd_dir = 0x0000000000402000; - . = INITIAL_ADDRESS; - .text TEXTSTART : + . = 0x10000 + SIZEOF_HEADERS; + .text 0xf0004000 : { _text = .; *(.text.head) TEXT_TEXT SCHED_TEXT LOCK_TEXT - KPROBES_TEXT *(.gnu.warning) } = 0 _etext = .; PROVIDE (etext = .); - - RO_DATA(PAGE_SIZE) + RODATA .data : { DATA_DATA CONSTRUCTORS @@ -57,32 +29,25 @@ SECTIONS .data1 : { *(.data1) } - . = ALIGN(SMP_CACHE_BYTES); - .data.cacheline_aligned : { - *(.data.cacheline_aligned) - } - . = ALIGN(SMP_CACHE_BYTES); - .data.read_mostly : { - *(.data.read_mostly) - } _edata = .; PROVIDE (edata = .); + .fixup : { __start___fixup = .; *(.fixup) __stop___fixup = .; } - . = ALIGN(16); __ex_table : { __start___ex_table = .; *(__ex_table) __stop___ex_table = .; } + NOTES . = ALIGN(PAGE_SIZE); + __init_begin = .; .init.text : { - __init_begin = .; _sinittext = .; INIT_TEXT _einittext = .; @@ -100,7 +65,7 @@ SECTIONS .initcall.init : { __initcall_start = .; INITCALLS - __initcall_end = .; + __initcall_end = .; } .con_initcall.init : { __con_initcall_start = .; @@ -109,54 +74,31 @@ SECTIONS } SECURITY_INIT - . = ALIGN(4); - .tsb_ldquad_phys_patch : { - __tsb_ldquad_phys_patch = .; - *(.tsb_ldquad_phys_patch) - __tsb_ldquad_phys_patch_end = .; - } - - .tsb_phys_patch : { - __tsb_phys_patch = .; - *(.tsb_phys_patch) - __tsb_phys_patch_end = .; - } - - .cpuid_patch : { - __cpuid_patch = .; - *(.cpuid_patch) - __cpuid_patch_end = .; - } - - .sun4v_1insn_patch : { - __sun4v_1insn_patch = .; - *(.sun4v_1insn_patch) - __sun4v_1insn_patch_end = .; - } - .sun4v_2insn_patch : { - __sun4v_2insn_patch = .; - *(.sun4v_2insn_patch) - __sun4v_2insn_patch_end = .; - } - #ifdef CONFIG_BLK_DEV_INITRD . = ALIGN(PAGE_SIZE); .init.ramfs : { - __initramfs_start = .; + __initramfs_start = .; *(.init.ramfs) - __initramfs_end = .; + __initramfs_end = .; } #endif PERCPU(PAGE_SIZE) - . = ALIGN(PAGE_SIZE); __init_end = .; + . = ALIGN(32); + .data.cacheline_aligned : { + *(.data.cacheline_aligned) + } + . = ALIGN(32); + .data.read_mostly : { + *(.data.read_mostly) + } + __bss_start = .; .sbss : { *(.sbss) - *(.scommon) - } + *(.scommon) } .bss : { *(.dynbss) *(.bss) @@ -164,7 +106,6 @@ SECTIONS } _end = . ; PROVIDE (end = .); - /DISCARD/ : { EXIT_TEXT EXIT_DATA |