18c2ecf20Sopenharmony_ci#include <asm-generic/vmlinux.lds.h> 28c2ecf20Sopenharmony_ci#include <asm/page.h> 38c2ecf20Sopenharmony_ci#include "sizes.h" 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#ifndef CONFIG_64BIT 68c2ecf20Sopenharmony_ciOUTPUT_FORMAT("elf32-hppa-linux") 78c2ecf20Sopenharmony_ciOUTPUT_ARCH(hppa) 88c2ecf20Sopenharmony_ci#else 98c2ecf20Sopenharmony_ciOUTPUT_FORMAT("elf64-hppa-linux") 108c2ecf20Sopenharmony_ciOUTPUT_ARCH(hppa:hppa2.0w) 118c2ecf20Sopenharmony_ci#endif 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciENTRY(startup) 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ciSECTIONS 168c2ecf20Sopenharmony_ci{ 178c2ecf20Sopenharmony_ci /* palo loads at 0x60000 */ 188c2ecf20Sopenharmony_ci /* loaded kernel will move to 0x10000 */ 198c2ecf20Sopenharmony_ci . = 0xe0000; /* should not overwrite palo code */ 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci .head.text : { 228c2ecf20Sopenharmony_ci _head = . ; 238c2ecf20Sopenharmony_ci HEAD_TEXT 248c2ecf20Sopenharmony_ci _ehead = . ; 258c2ecf20Sopenharmony_ci } 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci /* keep __gp below 0x1000000 */ 288c2ecf20Sopenharmony_ci#ifdef CONFIG_64BIT 298c2ecf20Sopenharmony_ci . = ALIGN(16); 308c2ecf20Sopenharmony_ci /* Linkage tables */ 318c2ecf20Sopenharmony_ci .opd : { 328c2ecf20Sopenharmony_ci __start_opd = .; 338c2ecf20Sopenharmony_ci *(.opd) 348c2ecf20Sopenharmony_ci __end_opd = .; 358c2ecf20Sopenharmony_ci } PROVIDE (__gp = .); 368c2ecf20Sopenharmony_ci .plt : { 378c2ecf20Sopenharmony_ci *(.plt) 388c2ecf20Sopenharmony_ci } 398c2ecf20Sopenharmony_ci .dlt : { 408c2ecf20Sopenharmony_ci *(.dlt) 418c2ecf20Sopenharmony_ci } 428c2ecf20Sopenharmony_ci#endif 438c2ecf20Sopenharmony_ci _startcode_end = .; 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci /* vmlinux.bin.gz is here */ 468c2ecf20Sopenharmony_ci . = ALIGN(8); 478c2ecf20Sopenharmony_ci .rodata.compressed : { 488c2ecf20Sopenharmony_ci *(.rodata.compressed) 498c2ecf20Sopenharmony_ci } 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci /* bootloader code and data starts at least behind area of extracted kernel */ 528c2ecf20Sopenharmony_ci . = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START)); 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci /* align on next page boundary */ 558c2ecf20Sopenharmony_ci . = ALIGN(4096); 568c2ecf20Sopenharmony_ci .text : { 578c2ecf20Sopenharmony_ci _text = .; /* Text */ 588c2ecf20Sopenharmony_ci *(.text) 598c2ecf20Sopenharmony_ci *(.text.*) 608c2ecf20Sopenharmony_ci _etext = . ; 618c2ecf20Sopenharmony_ci } 628c2ecf20Sopenharmony_ci . = ALIGN(8); 638c2ecf20Sopenharmony_ci .data : { 648c2ecf20Sopenharmony_ci _data = . ; 658c2ecf20Sopenharmony_ci *(.data) 668c2ecf20Sopenharmony_ci *(.data.*) 678c2ecf20Sopenharmony_ci _edata = . ; 688c2ecf20Sopenharmony_ci } 698c2ecf20Sopenharmony_ci . = ALIGN(8); 708c2ecf20Sopenharmony_ci .rodata : { 718c2ecf20Sopenharmony_ci _rodata = . ; 728c2ecf20Sopenharmony_ci *(.rodata) /* read-only data */ 738c2ecf20Sopenharmony_ci *(.rodata.*) 748c2ecf20Sopenharmony_ci _erodata = . ; 758c2ecf20Sopenharmony_ci } 768c2ecf20Sopenharmony_ci . = ALIGN(8); 778c2ecf20Sopenharmony_ci .bss : { 788c2ecf20Sopenharmony_ci _bss = . ; 798c2ecf20Sopenharmony_ci *(.bss) 808c2ecf20Sopenharmony_ci *(.bss.*) 818c2ecf20Sopenharmony_ci *(COMMON) 828c2ecf20Sopenharmony_ci . = ALIGN(4096); 838c2ecf20Sopenharmony_ci _ebss = .; 848c2ecf20Sopenharmony_ci } 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci STABS_DEBUG 878c2ecf20Sopenharmony_ci ELF_DETAILS 888c2ecf20Sopenharmony_ci .note 0 : { *(.note) } 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci /* Sections to be discarded */ 918c2ecf20Sopenharmony_ci DISCARDS 928c2ecf20Sopenharmony_ci /DISCARD/ : { 938c2ecf20Sopenharmony_ci#ifdef CONFIG_64BIT 948c2ecf20Sopenharmony_ci /* temporary hack until binutils is fixed to not emit these 958c2ecf20Sopenharmony_ci * for static binaries 968c2ecf20Sopenharmony_ci */ 978c2ecf20Sopenharmony_ci *(.PARISC.unwind) /* no unwind data */ 988c2ecf20Sopenharmony_ci *(.interp) 998c2ecf20Sopenharmony_ci *(.dynsym) 1008c2ecf20Sopenharmony_ci *(.dynstr) 1018c2ecf20Sopenharmony_ci *(.dynamic) 1028c2ecf20Sopenharmony_ci *(.hash) 1038c2ecf20Sopenharmony_ci *(.gnu.hash) 1048c2ecf20Sopenharmony_ci#endif 1058c2ecf20Sopenharmony_ci } 1068c2ecf20Sopenharmony_ci} 107