diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-01-30 15:34:06 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 15:34:06 +0300 |
commit | 5f5192b9feeff6a96c97c143c3ca558fdbe2dc8e (patch) | |
tree | 4abe5cf23d4cb4a052af8c26c80451b368392ee8 /arch/x86/mm/ioremap.c | |
parent | e1271f686a0e376aa6ee97984c16f91a787e4480 (diff) | |
download | linux-5f5192b9feeff6a96c97c143c3ca558fdbe2dc8e.tar.xz |
x86: move page_is_ram() function
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/mm/ioremap.c')
-rw-r--r-- | arch/x86/mm/ioremap.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index f4a2082568c8..d3026e1906f9 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c @@ -31,6 +31,30 @@ EXPORT_SYMBOL(__phys_addr); #endif +int page_is_ram(unsigned long pagenr) +{ + unsigned long addr, end; + int i; + + for (i = 0; i < e820.nr_map; i++) { + /* + * Not usable memory: + */ + if (e820.map[i].type != E820_RAM) + continue; + /* + * !!!FIXME!!! Some BIOSen report areas as RAM that + * are not. Notably the 640->1Mb area. We need a sanity + * check here. + */ + addr = (e820.map[i].addr + PAGE_SIZE-1) >> PAGE_SHIFT; + end = (e820.map[i].addr + e820.map[i].size) >> PAGE_SHIFT; + if ((pagenr >= addr) && (pagenr < end)) + return 1; + } + return 0; +} + /* * Fix up the linear direct mapping of the kernel to avoid cache attribute * conflicts. |