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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox