xref: /linux/arch/parisc/boot/compressed/vmlinux.lds.S (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
12f3c7b81SHelge Deller#include <asm-generic/vmlinux.lds.h>
22f3c7b81SHelge Deller#include <asm/page.h>
32f3c7b81SHelge Deller#include "sizes.h"
42f3c7b81SHelge Deller
52f3c7b81SHelge Deller#ifndef CONFIG_64BIT
62f3c7b81SHelge DellerOUTPUT_FORMAT("elf32-hppa-linux")
72f3c7b81SHelge DellerOUTPUT_ARCH(hppa)
82f3c7b81SHelge Deller#else
92f3c7b81SHelge DellerOUTPUT_FORMAT("elf64-hppa-linux")
102f3c7b81SHelge DellerOUTPUT_ARCH(hppa:hppa2.0w)
112f3c7b81SHelge Deller#endif
122f3c7b81SHelge Deller
132f3c7b81SHelge DellerENTRY(startup)
142f3c7b81SHelge Deller
152f3c7b81SHelge DellerSECTIONS
162f3c7b81SHelge Deller{
172f3c7b81SHelge Deller	/* palo loads at 0x60000 */
182f3c7b81SHelge Deller	/* loaded kernel will move to 0x10000 */
192f3c7b81SHelge Deller	. = 0xe0000;    /* should not overwrite palo code */
202f3c7b81SHelge Deller
212f3c7b81SHelge Deller	.head.text : {
222f3c7b81SHelge Deller		_head = . ;
232f3c7b81SHelge Deller		HEAD_TEXT
242f3c7b81SHelge Deller		_ehead = . ;
252f3c7b81SHelge Deller	}
262f3c7b81SHelge Deller
272f3c7b81SHelge Deller	/* keep __gp below 0x1000000 */
282f3c7b81SHelge Deller#ifdef CONFIG_64BIT
292f3c7b81SHelge Deller	. = ALIGN(16);
302f3c7b81SHelge Deller	/* Linkage tables */
312f3c7b81SHelge Deller	.opd : {
321705bd6aSSergey Senozhatsky		__start_opd = .;
332f3c7b81SHelge Deller		*(.opd)
341705bd6aSSergey Senozhatsky		__end_opd = .;
352f3c7b81SHelge Deller	} PROVIDE (__gp = .);
362f3c7b81SHelge Deller	.plt : {
372f3c7b81SHelge Deller		*(.plt)
382f3c7b81SHelge Deller	}
392f3c7b81SHelge Deller	.dlt : {
402f3c7b81SHelge Deller		*(.dlt)
412f3c7b81SHelge Deller	}
422f3c7b81SHelge Deller#endif
432f3c7b81SHelge Deller	_startcode_end = .;
442f3c7b81SHelge Deller
4534c201aeSHelge Deller	/* vmlinux.bin.gz is here */
4634c201aeSHelge Deller	. = ALIGN(8);
4734c201aeSHelge Deller	.rodata.compressed : {
4834c201aeSHelge Deller		*(.rodata.compressed)
4934c201aeSHelge Deller	}
5034c201aeSHelge Deller
513fe6c873SHelge Deller	/* bootloader code and data starts at least behind area of extracted kernel */
523fe6c873SHelge Deller	. = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START));
532f3c7b81SHelge Deller
542f3c7b81SHelge Deller	/* align on next page boundary */
552f3c7b81SHelge Deller	. = ALIGN(4096);
562f3c7b81SHelge Deller	.text :	{
572f3c7b81SHelge Deller		_text = .;	/* Text */
582f3c7b81SHelge Deller		*(.text)
592f3c7b81SHelge Deller		*(.text.*)
602f3c7b81SHelge Deller		_etext = . ;
612f3c7b81SHelge Deller	}
622f3c7b81SHelge Deller	. = ALIGN(8);
632f3c7b81SHelge Deller	.data :	{
642f3c7b81SHelge Deller		_data = . ;
652f3c7b81SHelge Deller		*(.data)
662f3c7b81SHelge Deller		*(.data.*)
672f3c7b81SHelge Deller		_edata = . ;
682f3c7b81SHelge Deller	}
692f3c7b81SHelge Deller	. = ALIGN(8);
702f3c7b81SHelge Deller	.rodata : {
712f3c7b81SHelge Deller		_rodata = . ;
722f3c7b81SHelge Deller		*(.rodata)	 /* read-only data */
732f3c7b81SHelge Deller		*(.rodata.*)
742f3c7b81SHelge Deller		_erodata = . ;
752f3c7b81SHelge Deller	}
762f3c7b81SHelge Deller	. = ALIGN(8);
772f3c7b81SHelge Deller	.bss : {
782f3c7b81SHelge Deller		_bss = . ;
792f3c7b81SHelge Deller		*(.bss)
802f3c7b81SHelge Deller		*(.bss.*)
812f3c7b81SHelge Deller		*(COMMON)
822f3c7b81SHelge Deller		. = ALIGN(4096);
832f3c7b81SHelge Deller		_ebss = .;
842f3c7b81SHelge Deller	}
852f3c7b81SHelge Deller
862f3c7b81SHelge Deller	STABS_DEBUG
87*c604abc3SKees Cook	ELF_DETAILS
882f3c7b81SHelge Deller	.note 0 : { *(.note) }
892f3c7b81SHelge Deller
902f3c7b81SHelge Deller	/* Sections to be discarded */
912f3c7b81SHelge Deller	DISCARDS
922f3c7b81SHelge Deller	/DISCARD/ : {
932f3c7b81SHelge Deller#ifdef CONFIG_64BIT
942f3c7b81SHelge Deller		/* temporary hack until binutils is fixed to not emit these
952f3c7b81SHelge Deller		 * for static binaries
962f3c7b81SHelge Deller		 */
972f3c7b81SHelge Deller		*(.PARISC.unwind)	/* no unwind data */
982f3c7b81SHelge Deller		*(.interp)
992f3c7b81SHelge Deller		*(.dynsym)
1002f3c7b81SHelge Deller		*(.dynstr)
1012f3c7b81SHelge Deller		*(.dynamic)
1022f3c7b81SHelge Deller		*(.hash)
1032f3c7b81SHelge Deller		*(.gnu.hash)
1042f3c7b81SHelge Deller#endif
1052f3c7b81SHelge Deller	}
1062f3c7b81SHelge Deller}
107