[U-Boot] [PATCH] sandbox: Add improved RAM simulation

Matthias Weisser weisserm at arcor.de
Tue Nov 1 17:05:05 CET 2011


Am 01.11.2011 16:28, schrieb Mike Frysinger:
> On Tuesday 01 November 2011 10:07:31 Matthias Weisser wrote:
>> --- a/arch/sandbox/cpu/os.c
>> +++ b/arch/sandbox/cpu/os.c
>>
>> +void *os_mmap(void *addr, size_t length, int prot, int flags, int fd,
>> +		off_t offset)
>> +{
>> +	return mmap((void *)addr, length, PROT_READ | PROT_WRITE,
> 
> void cast here is unnecessary

Right.

>> --- a/arch/sandbox/lib/board.c
>> +++ b/arch/sandbox/lib/board.c
>>
>> +static gd_t gd_mem;
> 
> i don't think this indirection is necessary.  probably can replace the static 
> gd_mem with:
> 	gd_t gd;

AFAIK gd is a pointer. So I think we always need some sort of memory
where the actual structure is stored.

>> +#define CONFIG_SYS_SDRAM_BASE		0x20000000
>> ...
>> -	mem = malloc(size);
>> +	mem = os_mmap((void *)CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_SDRAM_SIZE,
>> +			0, 0, -1, 0);
> 
> mmap() makes no guarantee that the requested address is what you'll get back.  
> so there's no point in having this SDRAM_BASE define.  punt it and pass in NULL 
> instead.

But it works in most cases :-) The point of adding it was that I really
like to have memory aligned on a 256MB boundary or so like it is in most
SOCs. But thats a personal preference. And if it doesn't work you can
still get the address of physical memory from bdinfo.

> also, with Simon's other patch to md to use the remap func, the address of our 
> memory backing store doesn't matter.

Well, you are right. But with the posted patch you don't need any remap
function and md/mm/mtest/mw works out of the box.

Regards
Matthias


More information about the U-Boot mailing list