1 /* SPDX-License-Identifier: GPL-2.0-only */ !! 1 /* ld script for sparc32/sparc64 kernel */ 2 /* << 3 * Linker script for Hexagon kernel << 4 * << 5 * Copyright (c) 2010-2014, The Linux Foundati << 6 */ << 7 2 8 #include <asm-generic/vmlinux.lds.h> 3 #include <asm-generic/vmlinux.lds.h> 9 #include <asm/asm-offsets.h> /* Most of th << 10 #include <asm/mem-layout.h> /* except for << 11 #include <asm/cache.h> /* and now we << 12 #include <asm/thread_info.h> /* and we nee << 13 4 14 OUTPUT_ARCH(hexagon) !! 5 #include <asm/page.h> 15 ENTRY(stext) !! 6 #include <asm/thread_info.h> 16 7 >> 8 #ifdef CONFIG_SPARC32 >> 9 #define INITIAL_ADDRESS 0x10000 + SIZEOF_HEADERS >> 10 #define TEXTSTART 0xf0004000 >> 11 >> 12 #define SMP_CACHE_BYTES_SHIFT 5 >> 13 >> 14 #else >> 15 #define SMP_CACHE_BYTES_SHIFT 6 >> 16 #define INITIAL_ADDRESS 0x4000 >> 17 #define TEXTSTART 0x0000000000404000 >> 18 >> 19 #endif >> 20 >> 21 #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) >> 22 >> 23 #ifdef CONFIG_SPARC32 >> 24 OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") >> 25 OUTPUT_ARCH(sparc) >> 26 ENTRY(_start) >> 27 jiffies = jiffies_64 + 4; >> 28 #else >> 29 /* sparc64 */ >> 30 OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") >> 31 OUTPUT_ARCH(sparc:v9a) >> 32 ENTRY(_start) 17 jiffies = jiffies_64; 33 jiffies = jiffies_64; 18 !! 34 #endif 19 /* << 20 See asm-generic/vmlinux.lds.h for expansion of << 21 See asm-generic/sections.h for seemingly requi << 22 */ << 23 << 24 #define PAGE_SIZE _PAGE_SIZE << 25 35 26 SECTIONS 36 SECTIONS 27 { 37 { 28 . = PAGE_OFFSET; !! 38 /* swapper_low_pmd_dir is sparc64 only */ 29 !! 39 swapper_low_pmd_dir = 0x0000000000402000; 30 __init_begin = .; !! 40 . = INITIAL_ADDRESS; 31 HEAD_TEXT_SECTION !! 41 .text TEXTSTART : 32 INIT_TEXT_SECTION(PAGE_SIZE) !! 42 { 33 PERCPU_SECTION(L1_CACHE_BYTES) << 34 __init_end = .; << 35 << 36 . = ALIGN(_PAGE_SIZE); << 37 _stext = .; << 38 .text : AT(ADDR(.text)) { << 39 _text = .; 43 _text = .; >> 44 HEAD_TEXT 40 TEXT_TEXT 45 TEXT_TEXT 41 IRQENTRY_TEXT << 42 SOFTIRQENTRY_TEXT << 43 SCHED_TEXT 46 SCHED_TEXT 44 LOCK_TEXT 47 LOCK_TEXT 45 KPROBES_TEXT 48 KPROBES_TEXT 46 *(.fixup) !! 49 *(.gnu.warning) 47 } !! 50 } = 0 48 _etext = .; 51 _etext = .; 49 52 50 INIT_DATA_SECTION(PAGE_SIZE) !! 53 RO_DATA(PAGE_SIZE) >> 54 .data1 : { >> 55 *(.data1) >> 56 } >> 57 RW_DATA_SECTION(SMP_CACHE_BYTES, 0, THREAD_SIZE) 51 58 52 _sdata = .; !! 59 /* End of data section */ 53 RW_DATA(32,PAGE_SIZE,_THREAD_S << 54 RO_DATA(PAGE_SIZE) << 55 _edata = .; 60 _edata = .; 56 61 >> 62 .fixup : { >> 63 __start___fixup = .; >> 64 *(.fixup) >> 65 __stop___fixup = .; >> 66 } 57 EXCEPTION_TABLE(16) 67 EXCEPTION_TABLE(16) >> 68 NOTES 58 69 59 BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _P !! 70 . = ALIGN(PAGE_SIZE); >> 71 __init_begin = ALIGN(PAGE_SIZE); >> 72 INIT_TEXT_SECTION(PAGE_SIZE) >> 73 __init_text_end = .; >> 74 INIT_DATA_SECTION(16) 60 75 61 _end = .; !! 76 . = ALIGN(4); >> 77 .tsb_ldquad_phys_patch : { >> 78 __tsb_ldquad_phys_patch = .; >> 79 *(.tsb_ldquad_phys_patch) >> 80 __tsb_ldquad_phys_patch_end = .; >> 81 } >> 82 >> 83 .tsb_phys_patch : { >> 84 __tsb_phys_patch = .; >> 85 *(.tsb_phys_patch) >> 86 __tsb_phys_patch_end = .; >> 87 } >> 88 >> 89 .cpuid_patch : { >> 90 __cpuid_patch = .; >> 91 *(.cpuid_patch) >> 92 __cpuid_patch_end = .; >> 93 } >> 94 >> 95 .sun4v_1insn_patch : { >> 96 __sun4v_1insn_patch = .; >> 97 *(.sun4v_1insn_patch) >> 98 __sun4v_1insn_patch_end = .; >> 99 } >> 100 .sun4v_2insn_patch : { >> 101 __sun4v_2insn_patch = .; >> 102 *(.sun4v_2insn_patch) >> 103 __sun4v_2insn_patch_end = .; >> 104 } >> 105 >> 106 PERCPU(PAGE_SIZE) >> 107 >> 108 . = ALIGN(PAGE_SIZE); >> 109 __init_end = .; >> 110 BSS_SECTION(0, 0, 0) >> 111 _end = . ; 62 112 63 STABS_DEBUG 113 STABS_DEBUG 64 DWARF_DEBUG 114 DWARF_DEBUG 65 ELF_DETAILS << 66 .hexagon.attributes 0 : { *(.hexagon.a << 67 115 68 DISCARDS 116 DISCARDS 69 } 117 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.