1a47a12beSStefan Roese/* 25113ee70SPrabhakar Kushwaha * Copyright 2009-2012 Freescale Semiconductor, Inc. 3a47a12beSStefan Roese * 41a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 5a47a12beSStefan Roese */ 6a47a12beSStefan Roese 7*6f2ed0e9SMasahiro Yamada#include "config.h" 80938b609SPrabhakar Kushwaha 90938b609SPrabhakar Kushwaha#ifndef CONFIG_SYS_MONITOR_LEN 100938b609SPrabhakar Kushwaha#define CONFIG_SYS_MONITOR_LEN 0x80000 110938b609SPrabhakar Kushwaha#endif 120938b609SPrabhakar Kushwaha 13a47a12beSStefan RoeseOUTPUT_ARCH(powerpc) 14a47a12beSStefan Roese/* Do we need any of these for elf? 15a47a12beSStefan Roese __DYNAMIC = 0; */ 16a47a12beSStefan RoesePHDRS 17a47a12beSStefan Roese{ 18a47a12beSStefan Roese text PT_LOAD; 19a47a12beSStefan Roese bss PT_LOAD; 20a47a12beSStefan Roese} 21a47a12beSStefan Roese 22a47a12beSStefan RoeseSECTIONS 23a47a12beSStefan Roese{ 24a47a12beSStefan Roese /* Read-only sections, merged into text segment: */ 25a47a12beSStefan Roese . = + SIZEOF_HEADERS; 26a47a12beSStefan Roese .interp : { *(.interp) } 27a47a12beSStefan Roese .text : 28a47a12beSStefan Roese { 2936ae6a8eSHaiying Wang *(.text*) 30a47a12beSStefan Roese } :text 31a47a12beSStefan Roese _etext = .; 32a47a12beSStefan Roese PROVIDE (etext = .); 33a47a12beSStefan Roese .rodata : 34a47a12beSStefan Roese { 35a47a12beSStefan Roese *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) 36a47a12beSStefan Roese } :text 37a47a12beSStefan Roese 38a47a12beSStefan Roese /* Read-write section, merged into data segment: */ 39a47a12beSStefan Roese . = (. + 0x00FF) & 0xFFFFFF00; 40a47a12beSStefan Roese _erotext = .; 41a47a12beSStefan Roese PROVIDE (erotext = .); 42a47a12beSStefan Roese .reloc : 43a47a12beSStefan Roese { 44a47a12beSStefan Roese _GOT2_TABLE_ = .; 4536ae6a8eSHaiying Wang KEEP(*(.got2)) 46d2a97dafSScott Wood KEEP(*(.got)) 47a47a12beSStefan Roese _FIXUP_TABLE_ = .; 4836ae6a8eSHaiying Wang KEEP(*(.fixup)) 49a47a12beSStefan Roese } 50d2a97dafSScott Wood __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1; 51a47a12beSStefan Roese __fixup_entries = (. - _FIXUP_TABLE_) >> 2; 52a47a12beSStefan Roese 53a47a12beSStefan Roese .data : 54a47a12beSStefan Roese { 5536ae6a8eSHaiying Wang *(.data*) 5636ae6a8eSHaiying Wang *(.sdata*) 57a47a12beSStefan Roese } 58a47a12beSStefan Roese _edata = .; 59a47a12beSStefan Roese PROVIDE (edata = .); 60a47a12beSStefan Roese 61a47a12beSStefan Roese . = .; 62a47a12beSStefan Roese 6355675142SMarek Vasut .u_boot_list : { 64ef123c52SAlbert ARIBAUD KEEP(*(SORT(.u_boot_list*))); 6555675142SMarek Vasut } 6655675142SMarek Vasut 67a47a12beSStefan Roese . = .; 68a47a12beSStefan Roese __start___ex_table = .; 69a47a12beSStefan Roese __ex_table : { *(__ex_table) } 70a47a12beSStefan Roese __stop___ex_table = .; 71a47a12beSStefan Roese 72a47a12beSStefan Roese . = ALIGN(256); 73a47a12beSStefan Roese __init_begin = .; 74a47a12beSStefan Roese .text.init : { *(.text.init) } 75a47a12beSStefan Roese .data.init : { *(.data.init) } 76a47a12beSStefan Roese . = ALIGN(256); 77a47a12beSStefan Roese __init_end = .; 78a47a12beSStefan Roese 79a47a12beSStefan Roese .bootpg ADDR(.text) - 0x1000 : 80a47a12beSStefan Roese { 815113ee70SPrabhakar Kushwaha KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg)) 82a47a12beSStefan Roese } :text = 0xffff 83a47a12beSStefan Roese 840938b609SPrabhakar Kushwaha . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN; 85a47a12beSStefan Roese 86a47a12beSStefan Roese __bss_start = .; 87a47a12beSStefan Roese .bss (NOLOAD) : 88a47a12beSStefan Roese { 8936ae6a8eSHaiying Wang *(.sbss*) 9036ae6a8eSHaiying Wang *(.bss*) 91a47a12beSStefan Roese *(COMMON) 92a47a12beSStefan Roese } :bss 93a47a12beSStefan Roese 94a47a12beSStefan Roese . = ALIGN(4); 953929fb0aSSimon Glass __bss_end = . ; 96a47a12beSStefan Roese PROVIDE (end = .); 97a47a12beSStefan Roese} 98