u-boot-spl.lds 2.1 KB
Newer Older
S
Scott Wood 已提交
1 2 3 4 5 6
/*
 * (C) Copyright 2006
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de
 *
 * Copyright 2009 Freescale Semiconductor, Inc.
 *
7
 * SPDX-License-Identifier:	GPL-2.0+
S
Scott Wood 已提交
8 9
 */

10
#include "config.h"
S
Scott Wood 已提交
11 12

OUTPUT_ARCH(powerpc)
13 14 15 16 17 18 19
#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
PHDRS
{
	text PT_LOAD;
	bss PT_LOAD;
}
#endif
S
Scott Wood 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
SECTIONS
{
	. = CONFIG_SPL_TEXT_BASE;
	.text : {
		*(.text*)
	}
	_etext = .;

	.reloc : {
		_GOT2_TABLE_ = .;
		KEEP(*(.got2))
		KEEP(*(.got))
		PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
		_FIXUP_TABLE_ = .;
		KEEP(*(.fixup))
	}
	__got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
	__fixup_entries = (. - _FIXUP_TABLE_) >> 2;

	. = ALIGN(8);
	.data : {
		*(.rodata*)
		*(.data*)
		*(.sdata*)
	}
	_edata  =  .;

47 48 49 50 51
	. = ALIGN(4);
	.u_boot_list : {
		KEEP(*(SORT(.u_boot_list*)));
	}

52 53 54 55 56
	. = .;
	__start___ex_table = .;
	__ex_table : { *(__ex_table) }
	__stop___ex_table = .;

S
Scott Wood 已提交
57 58 59
	. = ALIGN(8);
	__init_begin = .;
	__init_end = .;
60 61 62 63 64 65 66 67 68 69
#ifdef CONFIG_SPL_SKIP_RELOCATE
	. = ALIGN(4);
	__bss_start = .;
	.bss : {
		*(.sbss*)
		*(.bss*)
	}
	. = ALIGN(4);
	__bss_end = .;
#endif
70 71 72 73 74 75 76 77

/* For ifc, elbc, esdhc, espi, all need the SPL without section .resetvec */
#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
	.bootpg ADDR(.text) - 0x1000 :
	{
		KEEP(*(.bootpg))
	} :text = 0xffff
#else
S
Scott Wood 已提交
78
#if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
79 80 81 82
#ifndef BOOT_PAGE_OFFSET
#define BOOT_PAGE_OFFSET 0x1000
#endif
	.bootpg ADDR(.text) + BOOT_PAGE_OFFSET :
S
Scott Wood 已提交
83
	{
84
		arch/powerpc/cpu/mpc85xx/start.o (.bootpg)
S
Scott Wood 已提交
85
	}
86
#ifndef RESET_VECTOR_OFFSET
S
Scott Wood 已提交
87
#define RESET_VECTOR_OFFSET 0x1ffc /* IFC has 8K sram */
88
#endif
S
Scott Wood 已提交
89 90 91 92 93 94 95 96
#elif defined(CONFIG_FSL_ELBC)
#define RESET_VECTOR_OFFSET 0xffc /* LBC has 4k sram */
#else
#error unknown NAND controller
#endif
	.resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
		KEEP(*(.resetvec))
	} = 0xffff
97
#endif
S
Scott Wood 已提交
98

99
#ifndef CONFIG_SPL_SKIP_RELOCATE
S
Scott Wood 已提交
100 101 102 103 104 105
	/*
	 * Make sure that the bss segment isn't linked at 0x0, otherwise its
	 * address won't be updated during relocation fixups.
	 */
	. |= 0x10;

106
	. = ALIGN(4);
S
Scott Wood 已提交
107 108 109 110 111
	__bss_start = .;
	.bss : {
		*(.sbss*)
		*(.bss*)
	}
112
	. = ALIGN(4);
S
Simon Glass 已提交
113
	__bss_end = .;
114
#endif
S
Scott Wood 已提交
115
}