MPC85xx: fix memory layout to prevent corruption during memtest
Memory regions on MPC85xx boards are incorrectly defined leading to corruption when running memory tests. This patch updates the memory layout of MPC85xx boards so that critical memory regions can be correctly reserved during the memory test. Tested on the P2020RDB and DA923RC. Signed-off-by: Renaud Barbier <renaud.barbier@ge.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
a7dd756dfc
commit
35c49577de
|
@ -3,7 +3,6 @@ config PPC
|
|||
select HAVE_CONFIGURABLE_TEXT_BASE
|
||||
select HAS_KALLSYMS
|
||||
select HAS_MODULES
|
||||
select HAVE_CONFIGURABLE_MEMORY_LAYOUT
|
||||
select OFTREE
|
||||
default y
|
||||
|
||||
|
|
|
@ -879,9 +879,6 @@ relocate_code:
|
|||
sub r3, r3, r5
|
||||
lwz r5,GOT(__init_end) /* Copy to init_end only */
|
||||
sub r5,r5,r4
|
||||
lis r10, 0xffff0000@h /* Round down to 64KB */
|
||||
ori r10, r10, 0xffff0000@l
|
||||
and r3, r3, r10 /* Destination */
|
||||
mr r1, r3
|
||||
mr r10, r3
|
||||
li r6,CACHELINE_SIZE
|
||||
|
|
|
@ -46,11 +46,7 @@ void board_init_r (ulong end_of_ram)
|
|||
_text_base = end_of_ram;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* FIXME: 128k stack size. Is this enough? should
|
||||
* it be configurable?
|
||||
*/
|
||||
malloc_end = (_text_base - (128 << 10)) & ~(4095);
|
||||
malloc_end = (_text_base - STACK_SIZE) & ~(4095);
|
||||
|
||||
debug("malloc_end: 0x%08lx\n", malloc_end);
|
||||
debug("TEXT_BASE after relocation: 0x%08lx\n", _text_base);
|
||||
|
|
|
@ -32,6 +32,7 @@ config ARCH_MPC5200
|
|||
config MPC5xxx
|
||||
bool
|
||||
depends on MACH_PHYCORE_MPC5200B_TINY
|
||||
select HAVE_CONFIGURABLE_MEMORY_LAYOUT
|
||||
default y
|
||||
|
||||
menu "Board specific settings"
|
||||
|
|
|
@ -32,6 +32,8 @@ PHDRS
|
|||
SECTIONS
|
||||
{
|
||||
. = TEXT_BASE;
|
||||
_stext = .;
|
||||
PROVIDE (stext = .);
|
||||
|
||||
.interp : { *(.interp) }
|
||||
.hash : { *(.hash) }
|
||||
|
@ -96,8 +98,6 @@ SECTIONS
|
|||
*(.dynamic*)
|
||||
CONSTRUCTORS
|
||||
}
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
|
||||
. = .;
|
||||
__barebox_cmd_start = .;
|
||||
|
@ -118,6 +118,9 @@ SECTIONS
|
|||
__ex_table : { *(__ex_table) }
|
||||
__stop___ex_table = .;
|
||||
|
||||
_edata = .;
|
||||
PROVIDE (edata = .);
|
||||
|
||||
. = ALIGN(256);
|
||||
__init_begin = .;
|
||||
.text.init : { *(.text.init) }
|
||||
|
@ -130,7 +133,6 @@ SECTIONS
|
|||
.bootpg RESET_VECTOR_ADDRESS - 0xffc :
|
||||
{
|
||||
_text = .;
|
||||
_stext = .;
|
||||
arch/ppc/cpu-85xx/start.o (.bootpg)
|
||||
} :text = 0xffff
|
||||
|
||||
|
|
|
@ -24,7 +24,10 @@
|
|||
|
||||
#include <config.h>
|
||||
#include <common.h>
|
||||
#include <memory.h>
|
||||
#include <init.h>
|
||||
#include <asm/fsl_ddr_sdram.h>
|
||||
#include <asm-generic/memory_layout.h>
|
||||
#include <mach/mmu.h>
|
||||
#include <mach/immap_85xx.h>
|
||||
|
||||
|
@ -81,3 +84,11 @@ phys_size_t fsl_get_effective_memsize(void)
|
|||
|
||||
return sdram_size;
|
||||
}
|
||||
|
||||
static int fsl_reserve_region(void)
|
||||
{
|
||||
request_sdram_region("stack", _text_base - STACK_SIZE,
|
||||
STACK_SIZE);
|
||||
return 0;
|
||||
}
|
||||
coredevice_initcall(fsl_reserve_region);
|
||||
|
|
Loading…
Reference in New Issue