x86: Move back find_e820_area to e820.c

Makes early_res.c more clean, so later could move it to /kernel.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
LKML-Reference: <1265793639-15071-23-git-send-email-yinghai@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
Yinghai Lu
2010-02-10 01:20:26 -08:00
committed by H. Peter Anvin
父節點 7da657d1f1
當前提交 efdd0e81df
共有 4 個文件被更改,包括 57 次插入59 次删除

查看文件

@@ -722,6 +722,59 @@ static int __init e820_mark_nvs_memory(void)
core_initcall(e820_mark_nvs_memory);
#endif
/*
* Find a free area with specified alignment in a specific range.
*/
u64 __init find_e820_area(u64 start, u64 end, u64 size, u64 align)
{
int i;
for (i = 0; i < e820.nr_map; i++) {
struct e820entry *ei = &e820.map[i];
u64 addr;
u64 ei_start, ei_last;
if (ei->type != E820_RAM)
continue;
ei_last = ei->addr + ei->size;
ei_start = ei->addr;
addr = find_early_area(ei_start, ei_last, start, end,
size, align);
if (addr != -1ULL)
return addr;
}
return -1ULL;
}
/*
* Find next free range after *start
*/
u64 __init find_e820_area_size(u64 start, u64 *sizep, u64 align)
{
int i;
for (i = 0; i < e820.nr_map; i++) {
struct e820entry *ei = &e820.map[i];
u64 addr;
u64 ei_start, ei_last;
if (ei->type != E820_RAM)
continue;
ei_last = ei->addr + ei->size;
ei_start = ei->addr;
addr = find_early_area_size(ei_start, ei_last, start,
sizep, align);
if (addr != -1ULL)
return addr;
}
return -1ULL;
}
/*
* pre allocated 4k and reserved it in e820
*/