162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#include <asm-generic/vmlinux.lds.h>
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifdef CONFIG_PPC64_BOOT_WRAPPER
562306a36Sopenharmony_ciOUTPUT_ARCH(powerpc:common64)
662306a36Sopenharmony_ci#else
762306a36Sopenharmony_ciOUTPUT_ARCH(powerpc:common)
862306a36Sopenharmony_ci#endif
962306a36Sopenharmony_ciENTRY(_zimage_start)
1062306a36Sopenharmony_ciEXTERN(_zimage_start)
1162306a36Sopenharmony_ciSECTIONS
1262306a36Sopenharmony_ci{
1362306a36Sopenharmony_ci  .text      :
1462306a36Sopenharmony_ci  {
1562306a36Sopenharmony_ci    _start = .;
1662306a36Sopenharmony_ci    *(.text)
1762306a36Sopenharmony_ci    *(.fixup)
1862306a36Sopenharmony_ci    _etext = .;
1962306a36Sopenharmony_ci  }
2062306a36Sopenharmony_ci  . = ALIGN(4096);
2162306a36Sopenharmony_ci  .data    :
2262306a36Sopenharmony_ci  {
2362306a36Sopenharmony_ci    *(.rodata*)
2462306a36Sopenharmony_ci    *(.data*)
2562306a36Sopenharmony_ci    *(.sdata*)
2662306a36Sopenharmony_ci#ifndef CONFIG_PPC64_BOOT_WRAPPER
2762306a36Sopenharmony_ci    *(.got2)
2862306a36Sopenharmony_ci#endif
2962306a36Sopenharmony_ci  }
3062306a36Sopenharmony_ci  .dynsym : { *(.dynsym) }
3162306a36Sopenharmony_ci  .dynstr : { *(.dynstr) }
3262306a36Sopenharmony_ci  .dynamic :
3362306a36Sopenharmony_ci  {
3462306a36Sopenharmony_ci    __dynamic_start = .;
3562306a36Sopenharmony_ci    *(.dynamic)
3662306a36Sopenharmony_ci  }
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci#ifdef CONFIG_PPC64_BOOT_WRAPPER
3962306a36Sopenharmony_ci  .got : ALIGN(256)
4062306a36Sopenharmony_ci  {
4162306a36Sopenharmony_ci    *(.got .toc)
4262306a36Sopenharmony_ci  }
4362306a36Sopenharmony_ci#endif
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci  .hash : { *(.hash) }
4662306a36Sopenharmony_ci  .interp : { *(.interp) }
4762306a36Sopenharmony_ci  .rela.dyn :
4862306a36Sopenharmony_ci  {
4962306a36Sopenharmony_ci#ifdef CONFIG_PPC64_BOOT_WRAPPER
5062306a36Sopenharmony_ci    __rela_dyn_start = .;
5162306a36Sopenharmony_ci#endif
5262306a36Sopenharmony_ci    *(.rela*)
5362306a36Sopenharmony_ci  }
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  . = ALIGN(8);
5662306a36Sopenharmony_ci  .kernel:dtb :
5762306a36Sopenharmony_ci  {
5862306a36Sopenharmony_ci    _dtb_start = .;
5962306a36Sopenharmony_ci    *(.kernel:dtb)
6062306a36Sopenharmony_ci    _dtb_end = .;
6162306a36Sopenharmony_ci  }
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  . = ALIGN(4096);
6462306a36Sopenharmony_ci  .kernel:vmlinux.strip :
6562306a36Sopenharmony_ci  {
6662306a36Sopenharmony_ci    _vmlinux_start =  .;
6762306a36Sopenharmony_ci    *(.kernel:vmlinux.strip)
6862306a36Sopenharmony_ci    _vmlinux_end =  .;
6962306a36Sopenharmony_ci  }
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  . = ALIGN(4096);
7262306a36Sopenharmony_ci  .kernel:initrd :
7362306a36Sopenharmony_ci  {
7462306a36Sopenharmony_ci    _initrd_start =  .;
7562306a36Sopenharmony_ci    *(.kernel:initrd)
7662306a36Sopenharmony_ci    _initrd_end =  .;
7762306a36Sopenharmony_ci  }
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  . = ALIGN(4096);
8062306a36Sopenharmony_ci  .kernel:esm_blob :
8162306a36Sopenharmony_ci  {
8262306a36Sopenharmony_ci    _esm_blob_start =  .;
8362306a36Sopenharmony_ci    *(.kernel:esm_blob)
8462306a36Sopenharmony_ci    _esm_blob_end =  .;
8562306a36Sopenharmony_ci  }
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci  . = ALIGN(4096);
8862306a36Sopenharmony_ci  .bss       :
8962306a36Sopenharmony_ci  {
9062306a36Sopenharmony_ci    _edata  =  .;
9162306a36Sopenharmony_ci    __bss_start = .;
9262306a36Sopenharmony_ci    *(.sbss)
9362306a36Sopenharmony_ci    *(.bss)
9462306a36Sopenharmony_ci    *(COMMON)
9562306a36Sopenharmony_ci    _end = . ;
9662306a36Sopenharmony_ci  }
9762306a36Sopenharmony_ci}
98