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