18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * ld.script for compressed kernel support of LoongArch 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Author: Huacai Chen <chenhuacai@loongson.cn> 68c2ecf20Sopenharmony_ci * Copyright (C) 2020 Loongson Technology Corporation Limited 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci/* 108c2ecf20Sopenharmony_ci * Max avaliable Page Size is 64K, so we set SectionAlignment 118c2ecf20Sopenharmony_ci * field of EFI application to 64K. 128c2ecf20Sopenharmony_ci */ 138c2ecf20Sopenharmony_ciPECOFF_FILE_ALIGN = 0x200; 148c2ecf20Sopenharmony_ciPECOFF_SEGMENT_ALIGN = 0x10000; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciOUTPUT_ARCH(loongarch) 178c2ecf20Sopenharmony_ciENTRY(start) 188c2ecf20Sopenharmony_ciPHDRS { 198c2ecf20Sopenharmony_ci text PT_LOAD FLAGS(7); /* RWX */ 208c2ecf20Sopenharmony_ci} 218c2ecf20Sopenharmony_ciSECTIONS 228c2ecf20Sopenharmony_ci{ 238c2ecf20Sopenharmony_ci /* Text and read-only data */ 248c2ecf20Sopenharmony_ci _text = .; 258c2ecf20Sopenharmony_ci .head.text : { 268c2ecf20Sopenharmony_ci *(.head.text) 278c2ecf20Sopenharmony_ci } 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci .text : { 308c2ecf20Sopenharmony_ci *(.text) 318c2ecf20Sopenharmony_ci *(.init.text) 328c2ecf20Sopenharmony_ci *(.rodata) 338c2ecf20Sopenharmony_ci }: text 348c2ecf20Sopenharmony_ci /* End of text section */ 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci . = ALIGN(PECOFF_SEGMENT_ALIGN); 378c2ecf20Sopenharmony_ci _data = .; 388c2ecf20Sopenharmony_ci /* Writable data */ 398c2ecf20Sopenharmony_ci .data : { 408c2ecf20Sopenharmony_ci *(.data) 418c2ecf20Sopenharmony_ci *(.init.data) 428c2ecf20Sopenharmony_ci /* Put the compressed image here */ 438c2ecf20Sopenharmony_ci __image_begin = .; 448c2ecf20Sopenharmony_ci *(.image) 458c2ecf20Sopenharmony_ci __image_end = .; 468c2ecf20Sopenharmony_ci CONSTRUCTORS 478c2ecf20Sopenharmony_ci . = ALIGN(PECOFF_FILE_ALIGN); 488c2ecf20Sopenharmony_ci } 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci _edata = .; 518c2ecf20Sopenharmony_ci /* End of data section */ 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci /* BSS */ 548c2ecf20Sopenharmony_ci .bss : { 558c2ecf20Sopenharmony_ci *(.bss) 568c2ecf20Sopenharmony_ci *(.init.bss) 578c2ecf20Sopenharmony_ci } 588c2ecf20Sopenharmony_ci . = ALIGN(PECOFF_SEGMENT_ALIGN); 598c2ecf20Sopenharmony_ci _end = .; 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci /* Sections to be discarded */ 628c2ecf20Sopenharmony_ci /DISCARD/ : { 638c2ecf20Sopenharmony_ci *(.options) 648c2ecf20Sopenharmony_ci *(.comment) 658c2ecf20Sopenharmony_ci *(.note) 668c2ecf20Sopenharmony_ci } 678c2ecf20Sopenharmony_ci} 68