1/*
2 * Copyright 2009-2012 Freescale Semiconductor, Inc.
3 *
4 * SPDX-License-Identifier:	GPL-2.0+
5 */
6
7#include "config.h"
8
9#ifndef CONFIG_SYS_MONITOR_LEN
10#define CONFIG_SYS_MONITOR_LEN	0x80000
11#endif
12
13OUTPUT_ARCH(powerpc)
14/* Do we need any of these for elf?
15   __DYNAMIC = 0;    */
16PHDRS
17{
18  text PT_LOAD;
19  bss PT_LOAD;
20}
21
22SECTIONS
23{
24  /* Read-only sections, merged into text segment: */
25  . = + SIZEOF_HEADERS;
26  .interp : { *(.interp) }
27  .text      :
28  {
29    *(.text*)
30   } :text
31    _etext = .;
32    PROVIDE (etext = .);
33    .rodata    :
34   {
35    *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
36  } :text
37
38  /* Read-write section, merged into data segment: */
39  . = (. + 0x00FF) & 0xFFFFFF00;
40  _erotext = .;
41  PROVIDE (erotext = .);
42  .reloc   :
43  {
44    _GOT2_TABLE_ = .;
45    KEEP(*(.got2))
46    KEEP(*(.got))
47    PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
48    _FIXUP_TABLE_ = .;
49    KEEP(*(.fixup))
50  }
51  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
52  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
53
54  .data    :
55  {
56    *(.data*)
57    *(.sdata*)
58  }
59  _edata  =  .;
60  PROVIDE (edata = .);
61
62  . = .;
63
64  .u_boot_list : {
65	KEEP(*(SORT(.u_boot_list*)));
66  }
67
68  . = .;
69  __start___ex_table = .;
70  __ex_table : { *(__ex_table) }
71  __stop___ex_table = .;
72
73  . = ALIGN(256);
74  __init_begin = .;
75  .text.init : { *(.text.init) }
76  .data.init : { *(.data.init) }
77  . = ALIGN(256);
78  __init_end = .;
79
80  .bootpg ADDR(.text) - 0x1000 :
81  {
82    KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
83  } :text = 0xffff
84
85  . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
86
87  __bss_start = .;
88  .bss (NOLOAD)       :
89  {
90   *(.sbss*)
91   *(.bss*)
92   *(COMMON)
93  } :bss
94
95  . = ALIGN(4);
96  __bss_end = . ;
97  PROVIDE (end = .);
98}
99