public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Matthias Weisser <weisserm@arcor.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [[PATCH V2]] sandbox: Add improved RAM simulation
Date: Thu, 03 Nov 2011 18:55:12 +0100	[thread overview]
Message-ID: <4EB2D580.4010405@arcor.de> (raw)
In-Reply-To: <CAPnjgZ3MfWE=xk45132vgLUXDB_4om5UKaB21LTkmK21LSNMVw@mail.gmail.com>

Am 02.11.2011 21:56, schrieb Simon Glass:
> On Wed, Nov 2, 2011 at 1:12 PM, Matthias Weisser <weisserm@arcor.de> wrote:
>> Using mmap to allocate memory from the OS for RAM simulation we can use
>> u-boots own malloc implementation.
>>
>> Signed-off-by: Matthias Weisser <weisserm@arcor.de>
>> ---
>> Changes in V2:
>>  Removed the address hint for mmap
>>  Removed the special handling of dlmalloc in common
>>  Set gd->bd->bi_dram[0].start to 0 again
>>
>>  arch/sandbox/cpu/os.c    |    7 +++++++
>>  arch/sandbox/lib/board.c |   17 ++++++++++-------
>>  common/Makefile          |    2 --
>>  include/os.h             |    8 ++++++++
>>  4 files changed, 25 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
>> index 6c175d4..05f91f2 100644
>> --- a/arch/sandbox/cpu/os.c
>> +++ b/arch/sandbox/cpu/os.c
>> @@ -24,6 +24,7 @@
>>  #include <unistd.h>
>>  #include <sys/types.h>
>>  #include <sys/stat.h>
>> +#include <sys/mman.h>
>>
>>  #include <os.h>
>>
>> @@ -53,3 +54,9 @@ void os_exit(int exit_code)
>>  {
>>        exit(exit_code);
>>  }
>> +
>> +void *os_malloc(size_t length)
>> +{
>> +       return mmap(NULL, length, PROT_READ | PROT_WRITE,
>> +                       MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
>> +}
>> diff --git a/arch/sandbox/lib/board.c b/arch/sandbox/lib/board.c
>> index ae5a517..d71cd6f 100644
>> --- a/arch/sandbox/lib/board.c
>> +++ b/arch/sandbox/lib/board.c
>> @@ -45,8 +45,12 @@
>>  #include <version.h>
>>  #include <serial.h>
>>
>> +#include <os.h>
>> +
>>  DECLARE_GLOBAL_DATA_PTR;
>>
>> +static gd_t gd_mem;
>> +
>>  /************************************************************************
>>  * Init Utilities                                                      *
>>  ************************************************************************
>> @@ -147,7 +151,7 @@ void board_init_f(ulong bootflag)
>>        uchar *mem;
>>        unsigned long addr_sp, addr, size;
>>
>> -       gd = malloc(sizeof(gd_t));
>> +       gd = &gd_mem;
>>        assert(gd);
>>
>>        memset((void *)gd, 0, sizeof(gd_t));
>> @@ -158,7 +162,8 @@ void board_init_f(ulong bootflag)
>>        }
>>
>>        size = CONFIG_SYS_SDRAM_SIZE;
>> -       mem = malloc(size);
>> +       mem = os_malloc(CONFIG_SYS_SDRAM_SIZE);
>> +
> 
> Just a suggestion if you like: perhaps also assert that
> CONFIG_SYS_SDRAM_SIZE is greater than TOTAL_MALLOC_LEN. Or assert
> lower down at the end of board_init_f() that addr_sp is still greatrer
> than mem?

I will leave out this point for a separate patch.

>>        assert(mem);
>>        gd->ram_buf = mem;
>>        addr = (ulong)(mem + size);
>> @@ -214,11 +219,9 @@ void board_init_r(gd_t *id, ulong dest_addr)
>>        post_output_backlog();
>>  #endif
>>
>> -#if 0 /* Sandbox uses system malloc for now */
>> -       /* The Malloc area is immediately below the monitor copy in DRAM */
>> -       malloc_start = dest_addr - TOTAL_MALLOC_LEN;
>> -       mem_malloc_init(malloc_start, TOTAL_MALLOC_LEN);
>> -#endif
>> +       /* The Malloc area is at the top of simulated DRAM */
>> +       mem_malloc_init(gd->ram_buf + gd->ram_size - TOTAL_MALLOC_LEN,
>> +                       TOTAL_MALLOC_LEN);
> 
> I get:
> 
> board.c:224:4: warning: passing argument 1 of ?mem_malloc_init? makes
> integer from pointer without a cast [enabled by default]

Fixed. Will send an updated version.

>>
>>        /* initialize environment */
>>        env_relocate();
>> diff --git a/common/Makefile b/common/Makefile
>> index 1b672ad..919be42 100644
>> --- a/common/Makefile
>> +++ b/common/Makefile
>> @@ -29,9 +29,7 @@ LIB   = $(obj)libcommon.o
>>  ifndef CONFIG_SPL_BUILD
>>  COBJS-y += main.o
>>  COBJS-y += command.o
>> -ifndef CONFIG_SANDBOX
>>  COBJS-y += dlmalloc.o
>> -endif
> 
> I think this can be removed. It was added unconditionally lower down
> in the Makefile by this commit:
> 
> 2d01dd9 omap: spl: fix build break due to changes in FAT
> 
> (incidentally this is what has broken sandbox).

Will do.

Matthias

  reply	other threads:[~2011-11-03 17:55 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-01 14:07 [U-Boot] [PATCH] sandbox: Add improved RAM simulation Matthias Weisser
2011-11-01 15:28 ` Mike Frysinger
2011-11-01 16:05   ` Matthias Weisser
2011-11-01 16:45     ` Simon Glass
2011-11-01 18:37       ` Matthias Weisser
2011-11-01 18:52         ` Mike Frysinger
2011-11-01 19:01           ` Matthias Weisser
2011-11-01 20:10             ` Mike Frysinger
2011-11-02 18:35               ` Matthias Weisser
2011-11-02 19:20                 ` Mike Frysinger
2011-11-01 17:12     ` Mike Frysinger
2011-11-01 16:42 ` Simon Glass
2011-11-02 20:12 ` [U-Boot] [[PATCH V2]] " Matthias Weisser
2011-11-02 20:39   ` Mike Frysinger
2011-11-02 20:56   ` Simon Glass
2011-11-03 17:55     ` Matthias Weisser [this message]
2011-11-03 18:02 ` [U-Boot] [PATCH V3] " Matthias Weisser
2011-11-03 18:05   ` Mike Frysinger
2011-11-03 22:55   ` Simon Glass
2011-11-05 10:40 ` [U-Boot] [PATCH V4] " Matthias Weisser
2011-11-05 15:05   ` Simon Glass
2011-11-05 16:47   ` Mike Frysinger
2011-12-02 17:08   ` Mike Frysinger

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=4EB2D580.4010405@arcor.de \
    --to=weisserm@arcor.de \
    --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