blob: 14c31be5bf2d70a7ee7d7acec88fc1ee219b44df [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -05002/*
Kumar Galae727a362011-01-12 02:48:53 -06003 * Copyright 2007-2009, 2011 Freescale Semiconductor, Inc.
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -05004 */
5
Masahiro Yamadacd1b58e2014-04-28 10:17:10 +09006#include "config.h"
Kumar Galae727a362011-01-12 02:48:53 -06007
8#ifdef CONFIG_RESET_VECTOR_ADDRESS
9#define RESET_VECTOR_ADDRESS CONFIG_RESET_VECTOR_ADDRESS
10#else
Kumar Gala6472af82009-09-09 11:40:41 -050011#define RESET_VECTOR_ADDRESS 0xfffffffc
12#endif
13
Prabhakar Kushwaha120a1c32014-03-31 15:31:34 +053014#ifndef CONFIG_SYS_MONITOR_LEN
15#define CONFIG_SYS_MONITOR_LEN 0x80000
16#endif
17
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050018OUTPUT_ARCH(powerpc)
Alexander Grafcc369a42014-04-11 17:09:44 +020019ENTRY(_start_e500)
Peter Tyser1047c162010-09-29 14:05:56 -050020
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050021PHDRS
22{
23 text PT_LOAD;
24 bss PT_LOAD;
25}
26
27SECTIONS
28{
29 /* Read-only sections, merged into text segment: */
30 . = + SIZEOF_HEADERS;
31 .interp : { *(.interp) }
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050032 .text :
33 {
Peter Tyser1047c162010-09-29 14:05:56 -050034 *(.text*)
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050035 } :text
36 _etext = .;
37 PROVIDE (etext = .);
38 .rodata :
39 {
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050040 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
41 } :text
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050042
43 /* Read-write section, merged into data segment: */
44 . = (. + 0x00FF) & 0xFFFFFF00;
45 _erotext = .;
46 PROVIDE (erotext = .);
47 .reloc :
48 {
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050049 _GOT2_TABLE_ = .;
Peter Tyser1047c162010-09-29 14:05:56 -050050 KEEP(*(.got2))
Joakim Tjernlund42126a62010-12-03 17:30:37 +010051 KEEP(*(.got))
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050052 _FIXUP_TABLE_ = .;
Peter Tyser1047c162010-09-29 14:05:56 -050053 KEEP(*(.fixup))
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050054 }
Joakim Tjernlund42126a62010-12-03 17:30:37 +010055 __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050056 __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
57
58 .data :
59 {
Peter Tyser1047c162010-09-29 14:05:56 -050060 *(.data*)
61 *(.sdata*)
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050062 }
63 _edata = .;
64 PROVIDE (edata = .);
65
66 . = .;
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050067
Marek Vasut607092a2012-10-12 10:27:03 +000068 . = ALIGN(4);
69 .u_boot_list : {
Albert ARIBAUDc24895e2013-02-25 00:59:00 +000070 KEEP(*(SORT(.u_boot_list*)));
Marek Vasut607092a2012-10-12 10:27:03 +000071 }
72
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050073 . = .;
74 __start___ex_table = .;
75 __ex_table : { *(__ex_table) }
76 __stop___ex_table = .;
77
78 . = ALIGN(256);
79 __init_begin = .;
80 .text.init : { *(.text.init) }
81 .data.init : { *(.data.init) }
82 . = ALIGN(256);
83 __init_end = .;
84
Ying Zhang0d4f5442013-05-20 14:07:23 +080085#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
86 .bootpg ADDR(.text) - 0x1000 :
87 {
88 KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
89 } :text = 0xffff
Prabhakar Kushwaha120a1c32014-03-31 15:31:34 +053090 . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
Ying Zhang0d4f5442013-05-20 14:07:23 +080091#else
Kumar Gala6472af82009-09-09 11:40:41 -050092 .bootpg RESET_VECTOR_ADDRESS - 0xffc :
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050093 {
Stefan Roese88fbf932010-04-15 16:07:28 +020094 arch/powerpc/cpu/mpc85xx/start.o (.bootpg)
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050095 } :text = 0xffff
96
Kumar Gala6472af82009-09-09 11:40:41 -050097 .resetvec RESET_VECTOR_ADDRESS :
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -050098 {
Peter Tyser1047c162010-09-29 14:05:56 -050099 KEEP(*(.resetvec))
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -0500100 } :text = 0xffff
101
Kumar Gala6472af82009-09-09 11:40:41 -0500102 . = RESET_VECTOR_ADDRESS + 0x4;
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -0500103
Peter Tyser430445f2009-10-07 11:45:00 -0500104 /*
105 * Make sure that the bss segment isn't linked at 0x0, otherwise its
106 * address won't be updated during relocation fixups. Note that
107 * this is a temporary fix. Code to dynamically the fixup the bss
108 * location will be added in the future. When the bss relocation
109 * fixup code is present this workaround should be removed.
110 */
111#if (RESET_VECTOR_ADDRESS == 0xfffffffc)
112 . |= 0x10;
113#endif
Ying Zhang0d4f5442013-05-20 14:07:23 +0800114#endif
Peter Tyser430445f2009-10-07 11:45:00 -0500115
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -0500116 __bss_start = .;
117 .bss (NOLOAD) :
118 {
Peter Tyser1047c162010-09-29 14:05:56 -0500119 *(.sbss*)
120 *(.bss*)
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -0500121 *(COMMON)
122 } :bss
123
124 . = ALIGN(4);
Simon Glassed70c8f2013-03-14 06:54:53 +0000125 __bss_end = . ;
Srikanth Srinivasan949a2d52009-04-03 15:36:13 -0500126 PROVIDE (end = .);
127}