162306a36Sopenharmony_ci#include <asm-generic/vmlinux.lds.h> 262306a36Sopenharmony_ci#include <asm/page.h> 362306a36Sopenharmony_ci#include "sizes.h" 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#ifndef CONFIG_64BIT 662306a36Sopenharmony_ciOUTPUT_FORMAT("elf32-hppa-linux") 762306a36Sopenharmony_ciOUTPUT_ARCH(hppa) 862306a36Sopenharmony_ci#else 962306a36Sopenharmony_ciOUTPUT_FORMAT("elf64-hppa-linux") 1062306a36Sopenharmony_ciOUTPUT_ARCH(hppa:hppa2.0w) 1162306a36Sopenharmony_ci#endif 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciENTRY(startup) 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciSECTIONS 1662306a36Sopenharmony_ci{ 1762306a36Sopenharmony_ci /* palo loads at 0x60000 */ 1862306a36Sopenharmony_ci /* loaded kernel will move to 0x10000 */ 1962306a36Sopenharmony_ci . = 0xe0000; /* should not overwrite palo code */ 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci .head.text : { 2262306a36Sopenharmony_ci _head = . ; 2362306a36Sopenharmony_ci HEAD_TEXT 2462306a36Sopenharmony_ci _ehead = . ; 2562306a36Sopenharmony_ci } 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci /* keep __gp below 0x1000000 */ 2862306a36Sopenharmony_ci#ifdef CONFIG_64BIT 2962306a36Sopenharmony_ci . = ALIGN(16); 3062306a36Sopenharmony_ci /* Linkage tables */ 3162306a36Sopenharmony_ci .opd : { 3262306a36Sopenharmony_ci __start_opd = .; 3362306a36Sopenharmony_ci *(.opd) 3462306a36Sopenharmony_ci __end_opd = .; 3562306a36Sopenharmony_ci } PROVIDE (__gp = .); 3662306a36Sopenharmony_ci .plt : { 3762306a36Sopenharmony_ci *(.plt) 3862306a36Sopenharmony_ci } 3962306a36Sopenharmony_ci .dlt : { 4062306a36Sopenharmony_ci *(.dlt) 4162306a36Sopenharmony_ci } 4262306a36Sopenharmony_ci#endif 4362306a36Sopenharmony_ci _startcode_end = .; 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci /* vmlinux.bin.gz is here */ 4662306a36Sopenharmony_ci . = ALIGN(8); 4762306a36Sopenharmony_ci .rodata.compressed : { 4862306a36Sopenharmony_ci *(.rodata.compressed) 4962306a36Sopenharmony_ci } 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci /* bootloader code and data starts at least behind area of extracted kernel */ 5262306a36Sopenharmony_ci . = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START)); 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci /* align on next page boundary */ 5562306a36Sopenharmony_ci . = ALIGN(4096); 5662306a36Sopenharmony_ci .text : { 5762306a36Sopenharmony_ci _text = .; /* Text */ 5862306a36Sopenharmony_ci *(.text) 5962306a36Sopenharmony_ci *(.text.*) 6062306a36Sopenharmony_ci _etext = . ; 6162306a36Sopenharmony_ci } 6262306a36Sopenharmony_ci . = ALIGN(8); 6362306a36Sopenharmony_ci .data : { 6462306a36Sopenharmony_ci _data = . ; 6562306a36Sopenharmony_ci *(.data) 6662306a36Sopenharmony_ci *(.data.*) 6762306a36Sopenharmony_ci _edata = . ; 6862306a36Sopenharmony_ci } 6962306a36Sopenharmony_ci . = ALIGN(8); 7062306a36Sopenharmony_ci .rodata : { 7162306a36Sopenharmony_ci _rodata = . ; 7262306a36Sopenharmony_ci *(.rodata) /* read-only data */ 7362306a36Sopenharmony_ci *(.rodata.*) 7462306a36Sopenharmony_ci _erodata = . ; 7562306a36Sopenharmony_ci } 7662306a36Sopenharmony_ci . = ALIGN(8); 7762306a36Sopenharmony_ci .bss : { 7862306a36Sopenharmony_ci _bss = . ; 7962306a36Sopenharmony_ci *(.bss) 8062306a36Sopenharmony_ci *(.bss.*) 8162306a36Sopenharmony_ci *(COMMON) 8262306a36Sopenharmony_ci . = ALIGN(4096); 8362306a36Sopenharmony_ci _ebss = .; 8462306a36Sopenharmony_ci } 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci STABS_DEBUG 8762306a36Sopenharmony_ci ELF_DETAILS 8862306a36Sopenharmony_ci .note 0 : { *(.note) } 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ci /* Sections to be discarded */ 9162306a36Sopenharmony_ci DISCARDS 9262306a36Sopenharmony_ci /DISCARD/ : { 9362306a36Sopenharmony_ci#ifdef CONFIG_64BIT 9462306a36Sopenharmony_ci /* temporary hack until binutils is fixed to not emit these 9562306a36Sopenharmony_ci * for static binaries 9662306a36Sopenharmony_ci */ 9762306a36Sopenharmony_ci *(.PARISC.unwind) /* no unwind data */ 9862306a36Sopenharmony_ci *(.interp) 9962306a36Sopenharmony_ci *(.dynsym) 10062306a36Sopenharmony_ci *(.dynstr) 10162306a36Sopenharmony_ci *(.dynamic) 10262306a36Sopenharmony_ci *(.hash) 10362306a36Sopenharmony_ci *(.gnu.hash) 10462306a36Sopenharmony_ci#endif 10562306a36Sopenharmony_ci } 10662306a36Sopenharmony_ci} 107