^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #include <asm-generic/vmlinux.lds.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #include <asm/page.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #include "sizes.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #ifndef CONFIG_64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) OUTPUT_FORMAT("elf32-hppa-linux")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) OUTPUT_ARCH(hppa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) OUTPUT_FORMAT("elf64-hppa-linux")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) OUTPUT_ARCH(hppa:hppa2.0w)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) ENTRY(startup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) SECTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* palo loads at 0x60000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) /* loaded kernel will move to 0x10000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) . = 0xe0000; /* should not overwrite palo code */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .head.text : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) _head = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) HEAD_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) _ehead = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) /* keep __gp below 0x1000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #ifdef CONFIG_64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) . = ALIGN(16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /* Linkage tables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) .opd : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) __start_opd = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) *(.opd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) __end_opd = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) } PROVIDE (__gp = .);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .plt : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) *(.plt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) .dlt : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) *(.dlt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) _startcode_end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /* vmlinux.bin.gz is here */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) . = ALIGN(8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .rodata.compressed : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) *(.rodata.compressed)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) /* bootloader code and data starts at least behind area of extracted kernel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) . = MAX(ABSOLUTE(.), (SZ_end - SZparisc_kernel_start + KERNEL_BINARY_TEXT_START));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* align on next page boundary */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) . = ALIGN(4096);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) .text : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) _text = .; /* Text */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) *(.text)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) *(.text.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) _etext = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) . = ALIGN(8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .data : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) _data = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) *(.data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) *(.data.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) _edata = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) . = ALIGN(8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .rodata : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) _rodata = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) *(.rodata) /* read-only data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) *(.rodata.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) _erodata = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) . = ALIGN(8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) .bss : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) _bss = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) *(.bss)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) *(.bss.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) *(COMMON)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) . = ALIGN(4096);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) _ebss = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) STABS_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) ELF_DETAILS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) .note 0 : { *(.note) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) /* Sections to be discarded */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) DISCARDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /DISCARD/ : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #ifdef CONFIG_64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) /* temporary hack until binutils is fixed to not emit these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) * for static binaries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) *(.PARISC.unwind) /* no unwind data */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) *(.interp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) *(.dynsym)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) *(.dynstr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) *(.dynamic)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) *(.hash)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) *(.gnu.hash)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) }