All of lore.kernel.org
 help / color / mirror / Atom feed
From: Graeme Smecher <gsmecher@ece.ubc.ca>
To: u-boot@lists.denx.de
Subject: [U-Boot] Microblaze stack clobbered in d4e8ada0f6d51e0e3b80790fb9375ac8910f5352 (Consolidate arch-specific mem_malloc_init() implementations)
Date: Fri, 04 Dec 2009 15:00:05 -0800	[thread overview]
Message-ID: <4B199475.3020104@ece.ubc.ca> (raw)

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.

thanks,
Graeme

             reply	other threads:[~2009-12-04 23:00 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-04 23:00 Graeme Smecher [this message]
2009-12-07 10:12 ` [U-Boot] Microblaze stack clobbered in d4e8ada0f6d51e0e3b80790fb9375ac8910f5352 (Consolidate arch-specific mem_malloc_init() implementations) Michal Simek

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=4B199475.3020104@ece.ubc.ca \
    --to=gsmecher@ece.ubc.ca \
    --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.