9
0
Fork 0

introduce generic memory bank handling

On arm we have the concept of memory banks which can
be registered and iterated over. This is useful for
other architectures aswell, so add some generic infrastructure
for this.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2011-09-23 10:39:35 +02:00
parent b4e4684958
commit fbd855d7f5
2 changed files with 33 additions and 0 deletions

View File

@ -21,6 +21,7 @@
*/
#include <common.h>
#include <memory.h>
/*
* Begin and End of memory area for malloc(), and current "brk"
@ -69,3 +70,20 @@ void *sbrk(ptrdiff_t increment)
return old;
}
LIST_HEAD(memory_banks);
void barebox_add_memory_bank(const char *name, resource_size_t start,
resource_size_t size)
{
struct memory_bank *bank = xzalloc(sizeof(*bank));
struct device_d *dev;
dev = add_mem_device(name, start, size, IORESOURCE_MEM_WRITEABLE);
bank->dev = dev;
bank->start = start;
bank->size = size;
list_add_tail(&bank->list, &memory_banks);
}

View File

@ -2,9 +2,24 @@
#define __MEM_MALLOC_H
#include <linux/types.h>
#include <linux/list.h>
void mem_malloc_init(void *start, void *end);
ulong mem_malloc_start(void);
ulong mem_malloc_end(void);
struct memory_bank {
struct list_head list;
struct device_d *dev;
unsigned long start;
unsigned long size;
};
extern struct list_head memory_banks;
void barebox_add_memory_bank(const char *name, resource_size_t start,
resource_size_t size);
#define for_each_memory_bank(mem) list_for_each_entry(mem, &memory_banks, list)
#endif