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    _FIXUP_TABLE_ = .;
48    KEEP(*(.fixup))
49  }
50  __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
51  __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
52
53  .data    :
54  {
55    *(.data*)
56    *(.sdata*)
57  }
58  _edata  =  .;
59  PROVIDE (edata = .);
60
61  . = .;
62
63  .u_boot_list : {
64	KEEP(*(SORT(.u_boot_list*)));
65  }
66
67  . = .;
68  __start___ex_table = .;
69  __ex_table : { *(__ex_table) }
70  __stop___ex_table = .;
71
72  . = ALIGN(256);
73  __init_begin = .;
74  .text.init : { *(.text.init) }
75  .data.init : { *(.data.init) }
76  . = ALIGN(256);
77  __init_end = .;
78
79  .bootpg ADDR(.text) - 0x1000 :
80  {
81    KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
82  } :text = 0xffff
83
84  . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
85
86  __bss_start = .;
87  .bss (NOLOAD)       :
88  {
89   *(.sbss*)
90   *(.bss*)
91   *(COMMON)
92  } :bss
93
94  . = ALIGN(4);
95  __bss_end = . ;
96  PROVIDE (end = .);
97}
98