1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/sizes.h> 3#include <asm/asm-offsets.h> 4#include <asm/thread_info.h> 5 6#define PAGE_SIZE _PAGE_SIZE 7 8/* 9 * Put .bss..swapper_pg_dir as the first thing in .bss. This will 10 * ensure that it has .bss alignment (64K). 11 */ 12#define BSS_FIRST_SECTIONS *(.bss..swapper_pg_dir) 13 14#include <asm-generic/vmlinux.lds.h> 15 16/* 17 * Max avaliable Page Size is 64K, so we set SectionAlignment 18 * field of EFI application to 64K. 19 */ 20PECOFF_FILE_ALIGN = 0x200; 21PECOFF_SEGMENT_ALIGN = 0x10000; 22 23OUTPUT_ARCH(loongarch) 24ENTRY(kernel_entry) 25PHDRS { 26 text PT_LOAD FLAGS(7); /* RWX */ 27 note PT_NOTE FLAGS(4); /* R__ */ 28} 29 30jiffies = jiffies_64; 31 32SECTIONS 33{ 34 . = VMLINUX_LOAD_ADDRESS; 35 36 _text = .; 37 HEAD_TEXT_SECTION 38 39 . = ALIGN(PECOFF_SEGMENT_ALIGN); 40 .text : { 41 TEXT_TEXT 42 SCHED_TEXT 43 CPUIDLE_TEXT 44 LOCK_TEXT 45 KPROBES_TEXT 46 IRQENTRY_TEXT 47 SOFTIRQENTRY_TEXT 48 *(.fixup) 49 *(.gnu.warning) 50 } :text = 0 51 . = ALIGN(PECOFF_SEGMENT_ALIGN); 52 _etext = .; 53 54 EXCEPTION_TABLE(16) 55 56 . = ALIGN(PECOFF_SEGMENT_ALIGN); 57 __init_begin = .; 58 __inittext_begin = .; 59 60 INIT_TEXT_SECTION(PAGE_SIZE) 61 .exit.text : { 62 EXIT_TEXT 63 } 64 65 . = ALIGN(PECOFF_SEGMENT_ALIGN); 66 __inittext_end = .; 67 68 __initdata_begin = .; 69 70 INIT_DATA_SECTION(16) 71 .exit.data : { 72 EXIT_DATA 73 } 74 75 .init.bss : { 76 *(.init.bss) 77 } 78 . = ALIGN(PECOFF_SEGMENT_ALIGN); 79 __initdata_end = .; 80 81 __init_end = .; 82 83 _sdata = .; 84 RO_DATA(4096) 85 RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE) 86 87 .sdata : { 88 *(.sdata) 89 } 90 .edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); } 91 _edata = .; 92 93 BSS_SECTION(0, SZ_64K, 8) 94 . = ALIGN(PECOFF_SEGMENT_ALIGN); 95 96 _end = .; 97 98 STABS_DEBUG 99 DWARF_DEBUG 100 101 .gptab.sdata : { 102 *(.gptab.data) 103 *(.gptab.sdata) 104 } 105 .gptab.sbss : { 106 *(.gptab.bss) 107 *(.gptab.sbss) 108 } 109 110 DISCARDS 111 /DISCARD/ : { 112 *(.gnu.attributes) 113 *(.options) 114 *(.eh_frame) 115 } 116} 117