diff options
Diffstat (limited to 'arch/powerpc/cpu')
| -rw-r--r-- | arch/powerpc/cpu/mpc512x/speed.c | 6 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/cmd_errata.c | 3 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/cpu.c | 18 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/cpu_init.c | 14 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/fdt.c | 7 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/p2041_ids.c | 20 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/p3041_ids.c | 20 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/p5020_ids.c | 20 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/portals.c | 20 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/Makefile | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/spl_boot.c | 72 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/start.S | 37 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/u-boot-spl.lds | 74 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/u-boot.lds | 2 | 
15 files changed, 270 insertions, 51 deletions
| diff --git a/arch/powerpc/cpu/mpc512x/speed.c b/arch/powerpc/cpu/mpc512x/speed.c index 9a8f315d8..676187784 100644 --- a/arch/powerpc/cpu/mpc512x/speed.c +++ b/arch/powerpc/cpu/mpc512x/speed.c @@ -151,9 +151,3 @@ U_BOOT_CMD(clocks, 1, 0, do_clocks,  	"print clock configuration",  	"    clocks"  ); - -int prt_mpc512x_clks (void) -{ -	do_clocks (NULL, 0, 0, NULL); -	return (0); -} diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c index 5d72f4c34..422782ca8 100644 --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c @@ -255,6 +255,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  #ifdef CONFIG_SYS_P4080_ERRATUM_PCIE_A003  	puts("Work-around for Erratum PCIe-A003 enabled\n");  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_USB14 +	puts("Work-around for Erratum USB14 enabled\n"); +#endif  	return 0;  } diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c index df2ab6d73..6ce483e17 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu.c +++ b/arch/powerpc/cpu/mpc85xx/cpu.c @@ -282,14 +282,6 @@ unsigned long get_tbclk (void)  #if defined(CONFIG_WATCHDOG)  void -watchdog_reset(void) -{ -	int re_enable = disable_interrupts(); -	reset_85xx_watchdog(); -	if (re_enable) enable_interrupts(); -} - -void  reset_85xx_watchdog(void)  {  	/* @@ -297,6 +289,16 @@ reset_85xx_watchdog(void)  	 */  	mtspr(SPRN_TSR, TSR_WIS);  } + +void +watchdog_reset(void) +{ +	int re_enable = disable_interrupts(); + +	reset_85xx_watchdog(); +	if (re_enable) +		enable_interrupts(); +}  #endif	/* CONFIG_WATCHDOG */  /* diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c index de9d91611..53713e31d 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c @@ -623,6 +623,20 @@ skip_l2:  	}  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_USB14 +	/* On P204x/P304x/P50x0 Rev1.0, USB transmit will result internal +	 * multi-bit ECC errors which has impact on performance, so software +	 * should disable all ECC reporting from USB1 and USB2. +	 */ +	if (IS_SVR_REV(get_svr(), 1, 0)) { +		struct dcsr_dcfg_regs *dcfg = (struct dcsr_dcfg_regs *) +			(CONFIG_SYS_DCSRBAR + CONFIG_SYS_DCSR_DCFG_OFFSET); +		setbits_be32(&dcfg->ecccr1, +				(DCSR_DCFG_ECC_DISABLE_USB1 | +				 DCSR_DCFG_ECC_DISABLE_USB2)); +	} +#endif +  #ifdef CONFIG_FMAN_ENET  	fman_enet_init();  #endif diff --git a/arch/powerpc/cpu/mpc85xx/fdt.c b/arch/powerpc/cpu/mpc85xx/fdt.c index 24eb9789b..288f7b286 100644 --- a/arch/powerpc/cpu/mpc85xx/fdt.c +++ b/arch/powerpc/cpu/mpc85xx/fdt.c @@ -663,6 +663,13 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef CONFIG_FSL_CORENET  	do_fixup_by_compat_u32(blob, "fsl,qoriq-clockgen-1.0",  		"clock-frequency", CONFIG_SYS_CLK_FREQ, 1); +	do_fixup_by_compat_u32(blob, "fsl,qoriq-clockgen-2", +		"clock-frequency", CONFIG_SYS_CLK_FREQ, 1); +	do_fixup_by_compat_u32(blob, "fsl,mpic", +		"clock-frequency", get_bus_freq(0)/2, 1); +#else +	do_fixup_by_compat_u32(blob, "fsl,mpic", +		"clock-frequency", get_bus_freq(0), 1);  #endif  	fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize); diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c index 825a29238..b621adf4a 100644 --- a/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet_serdes.c @@ -103,6 +103,10 @@ static const struct {  	{ 22, 168, FSL_SRDS_BANK_3 },  	{ 23, 169, FSL_SRDS_BANK_3 },  #endif +#if SRDS_MAX_BANK > 3 +	{ 24, 175, FSL_SRDS_BANK_4 }, +	{ 25, 176, FSL_SRDS_BANK_4 }, +#endif  };  int serdes_get_lane_idx(int lane) diff --git a/arch/powerpc/cpu/mpc85xx/p2041_ids.c b/arch/powerpc/cpu/mpc85xx/p2041_ids.c index 91d9cac56..ef685fea0 100644 --- a/arch/powerpc/cpu/mpc85xx/p2041_ids.c +++ b/arch/powerpc/cpu/mpc85xx/p2041_ids.c @@ -27,16 +27,16 @@  #ifdef CONFIG_SYS_DPAA_QBMAN  struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {  	/* dqrr liodn, frame data liodn, liodn off, sdest */ -	SET_QP_INFO(1, 2, 1, 0), -	SET_QP_INFO(3, 4, 2, 1), -	SET_QP_INFO(5, 6, 3, 2), -	SET_QP_INFO(7, 8, 4, 3), -	SET_QP_INFO(9, 10, 5, 0), -	SET_QP_INFO(11, 12, 1, 1), -	SET_QP_INFO(13, 14, 2, 2), -	SET_QP_INFO(15, 16, 3, 3), -	SET_QP_INFO(17, 18, 4, 0), /* for now sdest to 0 */ -	SET_QP_INFO(19, 20, 5, 0), /* for now sdest to 0 */ +	SET_QP_INFO(1,  2,  1, 0), +	SET_QP_INFO(3,  4,  2, 1), +	SET_QP_INFO(5,  6,  3, 2), +	SET_QP_INFO(7,  8,  4, 3), +	SET_QP_INFO(9, 10,  5, 0), +	SET_QP_INFO(11, 12,  6, 1), +	SET_QP_INFO(13, 14,  7, 2), +	SET_QP_INFO(15, 16,  8, 3), +	SET_QP_INFO(17, 18,  9, 0), /* for now sdest to 0 */ +	SET_QP_INFO(19, 20, 10, 0), /* for now sdest to 0 */  };  #endif diff --git a/arch/powerpc/cpu/mpc85xx/p3041_ids.c b/arch/powerpc/cpu/mpc85xx/p3041_ids.c index e46a714dc..cab03f8ab 100644 --- a/arch/powerpc/cpu/mpc85xx/p3041_ids.c +++ b/arch/powerpc/cpu/mpc85xx/p3041_ids.c @@ -27,16 +27,16 @@  #ifdef CONFIG_SYS_DPAA_QBMAN  struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {  	/* dqrr liodn, frame data liodn, liodn off, sdest */ -	SET_QP_INFO(1, 2, 1, 0), -	SET_QP_INFO(3, 4, 2, 1), -	SET_QP_INFO(5, 6, 3, 2), -	SET_QP_INFO(7, 8, 4, 3), -	SET_QP_INFO(9, 10, 5, 0), -	SET_QP_INFO(11, 12, 1, 1), -	SET_QP_INFO(13, 14, 2, 2), -	SET_QP_INFO(15, 16, 3, 3), -	SET_QP_INFO(17, 18, 4, 0), /* for now sdest to 0 */ -	SET_QP_INFO(19, 20, 5, 0), /* for now sdest to 0 */ +	SET_QP_INFO(1,  2,  1, 0), +	SET_QP_INFO(3,  4,  2, 1), +	SET_QP_INFO(5,  6,  3, 2), +	SET_QP_INFO(7,  8,  4, 3), +	SET_QP_INFO(9, 10,  5, 0), +	SET_QP_INFO(1, 12,  6, 1), +	SET_QP_INFO(13, 14,  7, 2), +	SET_QP_INFO(15, 16,  8, 3), +	SET_QP_INFO(17, 18,  9, 0), /* for now sdest to 0 */ +	SET_QP_INFO(19, 20, 10, 0), /* for now sdest to 0 */  };  #endif diff --git a/arch/powerpc/cpu/mpc85xx/p5020_ids.c b/arch/powerpc/cpu/mpc85xx/p5020_ids.c index e8c26bf44..ca05b9cb2 100644 --- a/arch/powerpc/cpu/mpc85xx/p5020_ids.c +++ b/arch/powerpc/cpu/mpc85xx/p5020_ids.c @@ -27,16 +27,16 @@  #ifdef CONFIG_SYS_DPAA_QBMAN  struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = {  	/* dqrr liodn, frame data liodn, liodn off, sdest */ -	SET_QP_INFO(1, 2, 1, 0), -	SET_QP_INFO(3, 4, 2, 1), -	SET_QP_INFO(5, 6, 3, 0), -	SET_QP_INFO(7, 8, 4, 1), -	SET_QP_INFO(9, 10, 5, 0), -	SET_QP_INFO(11, 12, 1, 1), -	SET_QP_INFO(13, 14, 2, 0), -	SET_QP_INFO(15, 16, 3, 1), -	SET_QP_INFO(17, 18, 4, 0), -	SET_QP_INFO(19, 20, 5, 1), +	SET_QP_INFO(1,  2,  1, 0), +	SET_QP_INFO(3,  4,  2, 1), +	SET_QP_INFO(5,  6,  3, 0), +	SET_QP_INFO(7,  8,  4, 1), +	SET_QP_INFO(9, 10,  5, 0), +	SET_QP_INFO(11, 12,  6, 1), +	SET_QP_INFO(13, 14,  7, 0), +	SET_QP_INFO(15, 16,  8, 1), +	SET_QP_INFO(17, 18,  9, 0), +	SET_QP_INFO(19, 20, 10, 1),  };  #endif diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c index b59ef69f1..d529095ee 100644 --- a/arch/powerpc/cpu/mpc85xx/portals.c +++ b/arch/powerpc/cpu/mpc85xx/portals.c @@ -30,11 +30,9 @@  #include <asm/fsl_portals.h>  #include <asm/fsl_liodn.h> -static ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR; -static ccsr_bman_t *bman = (void *)CONFIG_SYS_FSL_BMAN_ADDR; -  void setup_portals(void)  { +	ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR;  #ifdef CONFIG_FSL_CORENET  	int i; @@ -166,6 +164,20 @@ static int fdt_qportal(void *blob, int off, int id, char *name,  			num = get_dpaa_liodn(dev, &liodns[0], id);  			ret = fdt_setprop(blob, childoff, "fsl,liodn",  					  &liodns[0], sizeof(u32) * num); +			if (!strncmp(name, "pme", 3)) { +				u32 pme_rev1, pme_rev2; +				ccsr_pme_t *pme_regs = +					(void *)CONFIG_SYS_FSL_CORENET_PME_ADDR; + +				pme_rev1 = in_be32(&pme_regs->pm_ip_rev_1); +				pme_rev2 = in_be32(&pme_regs->pm_ip_rev_2); +				ret = fdt_setprop(blob, childoff, +					"fsl,pme-rev1", &pme_rev1, sizeof(u32)); +				if (ret < 0) +					return ret; +				ret = fdt_setprop(blob, childoff, +					"fsl,pme-rev2", &pme_rev2, sizeof(u32)); +			}  #endif  		} else {  			return childoff; @@ -183,6 +195,7 @@ void fdt_fixup_qportals(void *blob)  	int off, err;  	unsigned int maj, min;  	unsigned int ip_cfg; +	ccsr_qman_t *qman = (void *)CONFIG_SYS_FSL_QMAN_ADDR;  	u32 rev_1 = in_be32(&qman->ip_rev_1);  	u32 rev_2 = in_be32(&qman->ip_rev_2);  	char compat[64]; @@ -272,6 +285,7 @@ void fdt_fixup_bportals(void *blob)  	int off, err;  	unsigned int maj, min;  	unsigned int ip_cfg; +	ccsr_bman_t *bman = (void *)CONFIG_SYS_FSL_BMAN_ADDR;  	u32 rev_1 = in_be32(&bman->ip_rev_1);  	u32 rev_2 = in_be32(&bman->ip_rev_2);  	char compat[64]; diff --git a/arch/powerpc/cpu/ppc4xx/Makefile b/arch/powerpc/cpu/ppc4xx/Makefile index 8da2f86e5..e301dc643 100644 --- a/arch/powerpc/cpu/ppc4xx/Makefile +++ b/arch/powerpc/cpu/ppc4xx/Makefile @@ -68,6 +68,10 @@ COBJS	+= miiphy.o  COBJS	+= uic.o  endif +ifdef CONFIG_SPL_BUILD +COBJS-y += spl_boot.o +endif +  SRCS	:= $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)  OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS) $(COBJS-y))  START	:= $(addprefix $(obj),$(START)) diff --git a/arch/powerpc/cpu/ppc4xx/spl_boot.c b/arch/powerpc/cpu/ppc4xx/spl_boot.c new file mode 100644 index 000000000..80869f61b --- /dev/null +++ b/arch/powerpc/cpu/ppc4xx/spl_boot.c @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2013 Stefan Roese <sr@denx.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + */ + +#include <common.h> +#include <spl.h> + +DECLARE_GLOBAL_DATA_PTR; + +/* + * Return selected boot device. On PPC4xx its only NOR flash right now. + */ +u32 spl_boot_device(void) +{ +	return BOOT_DEVICE_NOR; +} + +/* + * SPL version of board_init_f() + */ +void board_init_f(ulong bootflag) +{ +	/* +	 * First we need to initialize the SDRAM, so that the real +	 * U-Boot or the OS (Linux) can be loaded +	 */ +	initdram(0); + +	/* Clear bss */ +	memset(__bss_start, '\0', __bss_end - __bss_start); + +	/* +	 * Init global_data pointer. Has to be done before calling +	 * get_clocks(), as it stores some clock values into gd needed +	 * later on in the serial driver. +	 */ +	/* Pointer is writable since we allocated a register for it */ +	gd = (gd_t *)(CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET); +	/* Clear initial global data */ +	memset((void *)gd, 0, sizeof(gd_t)); + +	/* +	 * get_clocks() needs to be called so that the serial driver +	 * works correctly +	 */ +	get_clocks(); + +	/* +	 * Do rudimental console / serial setup +	 */ +	preloader_console_init(); + +	/* +	 * Call board_init_r() (SPL framework version) to load and boot +	 * real U-Boot or OS +	 */ +	board_init_r(NULL, 0); +	/* Does not return!!! */ +} diff --git a/arch/powerpc/cpu/ppc4xx/start.S b/arch/powerpc/cpu/ppc4xx/start.S index 52f262337..57ae1d382 100644 --- a/arch/powerpc/cpu/ppc4xx/start.S +++ b/arch/powerpc/cpu/ppc4xx/start.S @@ -232,7 +232,7 @@   *   * Use r12 to access the GOT   */ -#if !defined(CONFIG_NAND_SPL) +#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)  	START_GOT  	GOT_ENTRY(_GOT2_TABLE_)  	GOT_ENTRY(_FIXUP_TABLE_) @@ -248,7 +248,8 @@  	END_GOT  #endif /* CONFIG_NAND_SPL */ -#if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL) +#if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL) && \ +	!defined(CONFIG_SPL_BUILD)  	/*  	 * NAND U-Boot image is started from offset 0  	 */ @@ -270,6 +271,18 @@  	bl	_start_440  #endif +#if defined(CONFIG_SPL) && !defined(CONFIG_SPL_BUILD) +	/* +	 * This is the entry of the real U-Boot from a board port +	 * that supports SPL booting on the PPC4xx. We only need +	 * to call board_init_f() here. Everything else has already +	 * been done in the SPL u-boot version. +	 */ +	GET_GOT			/* initialize GOT access		*/ +	bl	board_init_f	/* run 1st part of board init code (in Flash)*/ +	/* NOTREACHED - board_init_f() does not return */ +#endif +  /*   * 440 Startup -- on reset only the top 4k of the effective   * address space is mapped in by an entry in the instruction @@ -539,7 +552,7 @@ tlbnx2:	addi	r4,r4,1		/* Next TLB */   * r3 - 1st arg to board_init(): IMMP pointer   * r4 - 2nd arg to board_init(): boot flag   */ -#ifndef CONFIG_NAND_SPL +#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)  	.text  	.long	0x27051956		/* U-Boot Magic Number			*/  	.globl	version_string @@ -612,6 +625,18 @@ _end_of_vectors:  	.globl	_start  _start: +#if defined(CONFIG_SPL) && !defined(CONFIG_SPL_BUILD) +	/* +	 * This is the entry of the real U-Boot from a board port +	 * that supports SPL booting on the PPC4xx. We only need +	 * to call board_init_f() here. Everything else has already +	 * been done in the SPL u-boot version. +	 */ +	GET_GOT			/* initialize GOT access		*/ +	bl	board_init_f	/* run 1st part of board init code (in Flash)*/ +	/* NOTREACHED - board_init_f() does not return */ +#endif +  /*****************************************************************************/  #if defined(CONFIG_440) @@ -796,7 +821,9 @@ _start:  #ifdef CONFIG_NAND_SPL  	bl	nand_boot_common	/* will not return */  #else +#ifndef CONFIG_SPL_BUILD  	GET_GOT +#endif  	bl	cpu_init_f	/* run low-level CPU init code	   (from Flash) */  	bl	board_init_f @@ -1080,7 +1107,7 @@ _start:  	/*----------------------------------------------------------------------- */ -#ifndef CONFIG_NAND_SPL +#if !defined(CONFIG_NAND_SPL) && !defined(CONFIG_SPL_BUILD)  /*   * This code finishes saving the registers to the exception frame   * and jumps to the appropriate handler for the exception. @@ -1262,6 +1289,7 @@ in32r:  	lwbrx	r3,r0,r3  	blr +#if !defined(CONFIG_SPL_BUILD)  /*   * void relocate_code (addr_sp, gd, addr_moni)   * @@ -1626,6 +1654,7 @@ __440_msr_continue:  	mtlr	r4			/* restore link register	*/  	blr +#endif /* CONFIG_SPL_BUILD */  #if defined(CONFIG_440)  /*----------------------------------------------------------------------------+ diff --git a/arch/powerpc/cpu/ppc4xx/u-boot-spl.lds b/arch/powerpc/cpu/ppc4xx/u-boot-spl.lds new file mode 100644 index 000000000..ae1df1719 --- /dev/null +++ b/arch/powerpc/cpu/ppc4xx/u-boot-spl.lds @@ -0,0 +1,74 @@ +/* + * Copyright 2012-2013 Stefan Roese <sr@denx.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +MEMORY +{ +	sdram : ORIGIN = CONFIG_SPL_BSS_START_ADDR, +		LENGTH = CONFIG_SPL_BSS_MAX_SIZE +	flash : ORIGIN = CONFIG_SPL_TEXT_BASE, +		LENGTH = CONFIG_SYS_SPL_MAX_LEN +} + +OUTPUT_ARCH(powerpc) +ENTRY(_start) +SECTIONS +{ +#ifdef CONFIG_440 +	.bootpg 0xfffff000 : +	{ +		arch/powerpc/cpu/ppc4xx/start.o	(.bootpg) + +		/* +		 * PPC440 board need a board specific object with the +		 * TLB definitions. This needs to get included right after +		 * start.o, since the first shadow TLB only covers 4k +		 * of address space. +		 */ +		CONFIG_BOARDDIR/init.o	(.bootpg) +	} > flash +#endif + +	.resetvec 0xFFFFFFFC : +	{ +		KEEP(*(.resetvec)) +	} > flash + +	.text : +	{ +		__start = .; +		arch/powerpc/cpu/ppc4xx/start.o	(.text) +		CONFIG_BOARDDIR/init.o	(.text) +		*(.text*) +	} > flash + +	. = ALIGN(4); +	.data : { *(SORT_BY_ALIGNMENT(.data*)) } > flash + +	. = ALIGN(4); +	.rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } > flash + +	.bss : +	{ +		. = ALIGN(4); +		__bss_start = .; +		*(.bss*) +		. = ALIGN(4); +		__bss_end = .; +	} > sdram +} diff --git a/arch/powerpc/cpu/ppc4xx/u-boot.lds b/arch/powerpc/cpu/ppc4xx/u-boot.lds index 06010d6b1..e994f0212 100644 --- a/arch/powerpc/cpu/ppc4xx/u-boot.lds +++ b/arch/powerpc/cpu/ppc4xx/u-boot.lds @@ -96,6 +96,7 @@ SECTIONS    . = ALIGN(256);    __init_end = .; +#ifndef CONFIG_SPL  #ifdef CONFIG_440    .bootpg RESET_VECTOR_ADDRESS - 0xffc :    { @@ -132,6 +133,7 @@ SECTIONS  #if (RESET_VECTOR_ADDRESS == 0xfffffffc)    . |= 0x10;  #endif +#endif /* CONFIG_SPL */    __bss_start = .;    .bss (NOLOAD)       : |