1 /* SPDX-License-Identifier: GPL-2.0-or-later * !! 1 /* ld script to make UltraLinux kernel */ 2 /* << 3 * OpenRISC vmlinux.lds.S << 4 * << 5 * Linux architectural port borrowing liberall << 6 * others. All original copyrights apply as p << 7 * declaration. << 8 * << 9 * Modifications for the OpenRISC architecture << 10 * Copyright (C) 2003 Matjaz Breskvar <phoenix@ << 11 * Copyright (C) 2010-2011 Jonas Bonn <jonas@so << 12 * << 13 * ld script for OpenRISC architecture << 14 */ << 15 << 16 /* TODO << 17 * - clean up __offset & stuff << 18 * - change all 8192 alignment to << 19 * - recheck if all alignments ar << 20 */ << 21 << 22 # define LOAD_OFFSET PAGE_OFFSET << 23 # define LOAD_BASE PAGE_OFFSET << 24 << 25 #include <asm/page.h> << 26 #include <asm/cache.h> << 27 #include <asm/thread_info.h> << 28 #include <asm-generic/vmlinux.lds.h> << 29 2 30 #ifdef __OR1K__ !! 3 #include <asm-generic/vmlinux.lds.h> 31 #define __OUTPUT_FORMAT "elf32-or1k" << 32 #else << 33 #define __OUTPUT_FORMAT "elf32-or32" << 34 #endif << 35 4 36 OUTPUT_FORMAT(__OUTPUT_FORMAT, __OUTPUT_FORMAT !! 5 OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") 37 jiffies = jiffies_64 + 4; !! 6 OUTPUT_ARCH(sparc:v9a) >> 7 ENTRY(_start) 38 8 >> 9 jiffies = jiffies_64; 39 SECTIONS 10 SECTIONS 40 { 11 { 41 /* Read-only sections, merged into tex !! 12 swapper_pmd_dir = 0x0000000000402000; 42 . = LOAD_BASE ; !! 13 empty_pg_dir = 0x0000000000403000; 43 !! 14 . = 0x4000; 44 _text = .; !! 15 .text 0x0000000000404000 : 45 !! 16 { 46 /* _s_kernel_ro must be page aligned * !! 17 *(.text) 47 . = ALIGN(PAGE_SIZE); !! 18 *(.gnu.warning) 48 _s_kernel_ro = .; !! 19 } =0 49 !! 20 _etext = .; 50 .text : AT(ADDR(.tex !! 21 PROVIDE (etext = .); 51 { !! 22 52 _stext = .; !! 23 RODATA 53 TEXT_TEXT !! 24 54 SCHED_TEXT !! 25 .data : 55 LOCK_TEXT !! 26 { 56 KPROBES_TEXT !! 27 *(.data) 57 IRQENTRY_TEXT !! 28 CONSTRUCTORS 58 SOFTIRQENTRY_TEXT !! 29 } 59 *(.fixup) !! 30 .data1 : { *(.data1) } 60 *(.text.__*) !! 31 . = ALIGN(64); 61 _etext = .; !! 32 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 62 } !! 33 _edata = .; 63 /* TODO: Check if fixup and text.__* a !! 34 PROVIDE (edata = .); 64 * fixup is definitely necessary !! 35 .fixup : { *(.fixup) } 65 */ !! 36 66 !! 37 . = ALIGN(16); 67 _sdata = .; !! 38 __start___ex_table = .; 68 !! 39 __ex_table : { *(__ex_table) } 69 /* Page alignment required for RO_DATA !! 40 __stop___ex_table = .; 70 RO_DATA(PAGE_SIZE) !! 41 71 _e_kernel_ro = .; !! 42 . = ALIGN(8192); 72 !! 43 __init_begin = .; 73 /* Whatever comes after _e_kernel_ro h !! 44 .init.text : { 74 !! 45 _sinittext = .; 75 /* 32 here is cacheline size... rechec !! 46 *(.init.text) 76 RW_DATA(32, PAGE_SIZE, PAGE_SIZE) !! 47 _einittext = .; 77 !! 48 } 78 _edata = .; !! 49 .init.data : { *(.init.data) } 79 !! 50 . = ALIGN(16); 80 EXCEPTION_TABLE(4) !! 51 __setup_start = .; 81 !! 52 .init.setup : { *(.init.setup) } 82 /* Init code and data */ !! 53 __setup_end = .; 83 . = ALIGN(PAGE_SIZE); !! 54 __start___param = .; 84 __init_begin = .; !! 55 __param : { *(__param) } 85 !! 56 __stop___param = .; 86 HEAD_TEXT_SECTION !! 57 __initcall_start = .; 87 !! 58 .initcall.init : { 88 /* Page aligned */ !! 59 *(.initcall1.init) 89 INIT_TEXT_SECTION(PAGE_SIZE) !! 60 *(.initcall2.init) 90 !! 61 *(.initcall3.init) 91 /* Align __setup_start on 16 byte boun !! 62 *(.initcall4.init) 92 INIT_DATA_SECTION(16) !! 63 *(.initcall5.init) 93 !! 64 *(.initcall6.init) 94 PERCPU_SECTION(L1_CACHE_BYTES) !! 65 *(.initcall7.init) 95 !! 66 } 96 __init_end = .; !! 67 __initcall_end = .; 97 !! 68 __con_initcall_start = .; 98 BSS_SECTION(0, 0, 0x20) !! 69 .con_initcall.init : { *(.con_initcall.init) } 99 !! 70 __con_initcall_end = .; 100 _end = .; !! 71 SECURITY_INIT 101 !! 72 . = ALIGN(8192); 102 /* Throw in the debugging sections */ !! 73 __initramfs_start = .; 103 STABS_DEBUG !! 74 .init.ramfs : { *(.init.ramfs) } 104 DWARF_DEBUG !! 75 __initramfs_end = .; 105 ELF_DETAILS !! 76 . = ALIGN(32); 106 !! 77 __per_cpu_start = .; 107 /* Sections to be discarded -- must be !! 78 .data.percpu : { *(.data.percpu) } 108 DISCARDS !! 79 __per_cpu_end = .; >> 80 . = ALIGN(8192); >> 81 __init_end = .; >> 82 __bss_start = .; >> 83 .sbss : { *(.sbss) *(.scommon) } >> 84 .bss : >> 85 { >> 86 *(.dynbss) >> 87 *(.bss) >> 88 *(COMMON) >> 89 } >> 90 _end = . ; >> 91 PROVIDE (end = .); >> 92 /* Stabs debugging sections. */ >> 93 .stab 0 : { *(.stab) } >> 94 .stabstr 0 : { *(.stabstr) } >> 95 .stab.excl 0 : { *(.stab.excl) } >> 96 .stab.exclstr 0 : { *(.stab.exclstr) } >> 97 .stab.index 0 : { *(.stab.index) } >> 98 .stab.indexstr 0 : { *(.stab.indexstr) } >> 99 .comment 0 : { *(.comment) } >> 100 .debug 0 : { *(.debug) } >> 101 .debug_srcinfo 0 : { *(.debug_srcinfo) } >> 102 .debug_aranges 0 : { *(.debug_aranges) } >> 103 .debug_pubnames 0 : { *(.debug_pubnames) } >> 104 .debug_sfnames 0 : { *(.debug_sfnames) } >> 105 .line 0 : { *(.line) } >> 106 /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } 109 } 107 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.