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 IRQENTRY_TEXT 47 } !! 50 *(.gnu.warning) >> 51 } = 0 48 _etext = .; 52 _etext = .; 49 53 50 INIT_DATA_SECTION(PAGE_SIZE) !! 54 RO_DATA(PAGE_SIZE) 51 55 >> 56 /* Start of data section */ 52 _sdata = .; 57 _sdata = .; 53 RW_DATA(32,PAGE_SIZE,_THREAD_S !! 58 54 RO_DATA(PAGE_SIZE) !! 59 .data1 : { >> 60 *(.data1) >> 61 } >> 62 RW_DATA_SECTION(SMP_CACHE_BYTES, 0, THREAD_SIZE) >> 63 >> 64 /* End of data section */ 55 _edata = .; 65 _edata = .; 56 66 >> 67 .fixup : { >> 68 __start___fixup = .; >> 69 *(.fixup) >> 70 __stop___fixup = .; >> 71 } 57 EXCEPTION_TABLE(16) 72 EXCEPTION_TABLE(16) >> 73 NOTES >> 74 >> 75 . = ALIGN(PAGE_SIZE); >> 76 __init_begin = ALIGN(PAGE_SIZE); >> 77 INIT_TEXT_SECTION(PAGE_SIZE) >> 78 __init_text_end = .; >> 79 INIT_DATA_SECTION(16) >> 80 >> 81 . = ALIGN(4); >> 82 .tsb_ldquad_phys_patch : { >> 83 __tsb_ldquad_phys_patch = .; >> 84 *(.tsb_ldquad_phys_patch) >> 85 __tsb_ldquad_phys_patch_end = .; >> 86 } >> 87 >> 88 .tsb_phys_patch : { >> 89 __tsb_phys_patch = .; >> 90 *(.tsb_phys_patch) >> 91 __tsb_phys_patch_end = .; >> 92 } >> 93 >> 94 .cpuid_patch : { >> 95 __cpuid_patch = .; >> 96 *(.cpuid_patch) >> 97 __cpuid_patch_end = .; >> 98 } 58 99 59 BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _P !! 100 .sun4v_1insn_patch : { >> 101 __sun4v_1insn_patch = .; >> 102 *(.sun4v_1insn_patch) >> 103 __sun4v_1insn_patch_end = .; >> 104 } >> 105 .sun4v_2insn_patch : { >> 106 __sun4v_2insn_patch = .; >> 107 *(.sun4v_2insn_patch) >> 108 __sun4v_2insn_patch_end = .; >> 109 } >> 110 .leon_1insn_patch : { >> 111 __leon_1insn_patch = .; >> 112 *(.leon_1insn_patch) >> 113 __leon_1insn_patch_end = .; >> 114 } >> 115 .swapper_tsb_phys_patch : { >> 116 __swapper_tsb_phys_patch = .; >> 117 *(.swapper_tsb_phys_patch) >> 118 __swapper_tsb_phys_patch_end = .; >> 119 } >> 120 .swapper_4m_tsb_phys_patch : { >> 121 __swapper_4m_tsb_phys_patch = .; >> 122 *(.swapper_4m_tsb_phys_patch) >> 123 __swapper_4m_tsb_phys_patch_end = .; >> 124 } >> 125 .popc_3insn_patch : { >> 126 __popc_3insn_patch = .; >> 127 *(.popc_3insn_patch) >> 128 __popc_3insn_patch_end = .; >> 129 } >> 130 .popc_6insn_patch : { >> 131 __popc_6insn_patch = .; >> 132 *(.popc_6insn_patch) >> 133 __popc_6insn_patch_end = .; >> 134 } >> 135 .pause_3insn_patch : { >> 136 __pause_3insn_patch = .; >> 137 *(.pause_3insn_patch) >> 138 __pause_3insn_patch_end = .; >> 139 } >> 140 PERCPU_SECTION(SMP_CACHE_BYTES) 60 141 61 _end = .; !! 142 . = ALIGN(PAGE_SIZE); >> 143 __init_end = .; >> 144 BSS_SECTION(0, 0, 0) >> 145 _end = . ; 62 146 63 STABS_DEBUG 147 STABS_DEBUG 64 DWARF_DEBUG 148 DWARF_DEBUG 65 ELF_DETAILS << 66 .hexagon.attributes 0 : { *(.hexagon.a << 67 149 68 DISCARDS 150 DISCARDS 69 } 151 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.