From: Michal Simek <monstr@monstr.eu>
To: u-boot@lists.denx.de
Subject: [U-Boot] Microblaze stack clobbered in d4e8ada0f6d51e0e3b80790fb9375ac8910f5352 (Consolidate arch-specific mem_malloc_init() implementations)
Date: Mon, 07 Dec 2009 11:12:07 +0100 [thread overview]
Message-ID: <4B1CD4F7.10702@monstr.eu> (raw)
In-Reply-To: <4B199475.3020104@ece.ubc.ca>
Hi Graeme,
Graeme Smecher wrote:
> Hi Michal,
>
> It appears there's a problem with the default memory map in u-boot's
> "microblaze-generic" configuration. We have (from
> include/configs/microblaze-generic.h):
>
>
> /* ddr sdram - main memory */
> #define CONFIG_SYS_SDRAM_BASE XILINX_RAM_START
> #define CONFIG_SYS_SDRAM_SIZE XILINX_RAM_SIZE
> #define CONFIG_SYS_MEMTEST_START CONFIG_SYS_SDRAM_BASE
> #define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_SDRAM_BASE +
> 0x1000)
>
> /* global pointer */
> #define CONFIG_SYS_GBL_DATA_SIZE 128 /* size of global data */
> /* start of global data */
> #define CONFIG_SYS_GBL_DATA_OFFSET (CONFIG_SYS_SDRAM_BASE +
> CONFIG_SYS_SDRAM_SIZE - CONFIG_SYS_GBL_DATA_SIZE)
>
> /* monitor code */
> #define SIZE 0x40000
> #define CONFIG_SYS_MONITOR_LEN (SIZE -
> CONFIG_SYS_GBL_DATA_SIZE)
> #define CONFIG_SYS_MONITOR_BASE (CONFIG_SYS_GBL_DATA_OFFSET -
> CONFIG_SYS_MONITOR_LEN)
> #define CONFIG_SYS_MONITOR_END (CONFIG_SYS_MONITOR_BASE +
> CONFIG_SYS_MONITOR_LEN)
> #define CONFIG_SYS_MALLOC_LEN SIZE
> #define CONFIG_SYS_MALLOC_BASE (CONFIG_SYS_MONITOR_BASE -
> CONFIG_SYS_MALLOC_LEN)
>
> /* stack */
> #define CONFIG_SYS_INIT_SP_OFFSET CONFIG_SYS_MONITOR_BASE
>
>
> This builds a memory map like the following:
>
> 0x47f80000 - 0x47fbffff: malloc region
> 0x47fc0000 - 0x47ffff7f: monitor
> 0x47ffff80 - 0x47ffffff: globals
>
> The initial SP is set to 0x47fc0000. This collides with the malloc
> region, and when the malloc region is cleared during mem_malloc_init(),
> the stack is wiped out. This includes the return address from
> mem_malloc_init(), among other things.
>
> Can you confirm that CONFIG_SYS_INIT_SP_OFFSET should be
> CONFIG_SYS_MALLOC_BASE instead of CONFIG_SYS_MONITOR_BASE? That agrees
> with your memory diagram at include/configs/microblaze-generic.h:103.
yes, you are correct.
Please create proper patch and I will add it to mainline.
Thanks,
Michal
>
> thanks,
> Graeme
--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
prev parent reply other threads:[~2009-12-07 10:12 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-04 23:00 [U-Boot] Microblaze stack clobbered in d4e8ada0f6d51e0e3b80790fb9375ac8910f5352 (Consolidate arch-specific mem_malloc_init() implementations) Graeme Smecher
2009-12-07 10:12 ` Michal Simek [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B1CD4F7.10702@monstr.eu \
--to=monstr@monstr.eu \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.