1a47a12beSStefan Roese/* 2a47a12beSStefan Roese * (C) Copyright 2006 3a47a12beSStefan Roese * Wolfgang Denk, DENX Software Engineering, wd@denx.de 4a47a12beSStefan Roese * 5a47a12beSStefan Roese * Copyright 2009 Freescale Semiconductor, Inc. 6a47a12beSStefan Roese * 71a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 8a47a12beSStefan Roese */ 9a47a12beSStefan Roese 10*6f2ed0e9SMasahiro Yamada#include "config.h" 1152f90dadSDipen Dudhat 12a47a12beSStefan RoeseOUTPUT_ARCH(powerpc) 13a47a12beSStefan RoeseSECTIONS 14a47a12beSStefan Roese{ 15a47a12beSStefan Roese . = 0xfff00000; 16a47a12beSStefan Roese .text : { 1736ae6a8eSHaiying Wang *(.text*) 18a47a12beSStefan Roese } 19a47a12beSStefan Roese _etext = .; 20a47a12beSStefan Roese 21a47a12beSStefan Roese .reloc : { 22a47a12beSStefan Roese _GOT2_TABLE_ = .; 2336ae6a8eSHaiying Wang KEEP(*(.got2)) 24d2a97dafSScott Wood KEEP(*(.got)) 25a47a12beSStefan Roese _FIXUP_TABLE_ = .; 2636ae6a8eSHaiying Wang KEEP(*(.fixup)) 27a47a12beSStefan Roese } 28d2a97dafSScott Wood __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1; 29a47a12beSStefan Roese __fixup_entries = (. - _FIXUP_TABLE_) >> 2; 30a47a12beSStefan Roese 31a47a12beSStefan Roese . = ALIGN(8); 32a47a12beSStefan Roese .data : { 33a47a12beSStefan Roese *(.rodata*) 34a47a12beSStefan Roese *(.data*) 35a47a12beSStefan Roese *(.sdata*) 36a47a12beSStefan Roese } 37a47a12beSStefan Roese _edata = .; 38a47a12beSStefan Roese 3955675142SMarek Vasut .u_boot_list : { 40ef123c52SAlbert ARIBAUD KEEP(*(SORT(.u_boot_list*))); 4155675142SMarek Vasut } 4255675142SMarek Vasut 43a47a12beSStefan Roese . = ALIGN(8); 44a47a12beSStefan Roese __init_begin = .; 45a47a12beSStefan Roese __init_end = .; 4652f90dadSDipen Dudhat#if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */ 4752f90dadSDipen Dudhat .bootpg ADDR(.text) + 0x1000 : 4852f90dadSDipen Dudhat { 4952f90dadSDipen Dudhat start.o (.bootpg) 5052f90dadSDipen Dudhat } 5152f90dadSDipen Dudhat#define RESET_VECTOR_OFFSET 0x1ffc /* IFC has 8K sram */ 5252f90dadSDipen Dudhat#elif defined(CONFIG_FSL_ELBC) 5352f90dadSDipen Dudhat#define RESET_VECTOR_OFFSET 0xffc /* LBC has 4k sram */ 5452f90dadSDipen Dudhat#else 5552f90dadSDipen Dudhat#error unknown NAND controller 5652f90dadSDipen Dudhat#endif 5752f90dadSDipen Dudhat .resetvec ADDR(.text) + RESET_VECTOR_OFFSET : { 5836ae6a8eSHaiying Wang KEEP(*(.resetvec)) 59a47a12beSStefan Roese } = 0xffff 60a47a12beSStefan Roese 61a47a12beSStefan Roese __bss_start = .; 62a47a12beSStefan Roese .bss : { 6336ae6a8eSHaiying Wang *(.sbss*) 6436ae6a8eSHaiying Wang *(.bss*) 65a47a12beSStefan Roese } 663929fb0aSSimon Glass __bss_end = .; 67a47a12beSStefan Roese} 6852f90dadSDipen DudhatASSERT(__init_end <= (0xfff00000 + RESET_VECTOR_OFFSET), "NAND bootstrap too big"); 69