ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-i386 / mach-default / setup_arch_post.h
1 /**
2  * machine_specific_memory_setup - Hook for machine specific memory setup.
3  *
4  * Description:
5  *      This is included late in kernel/setup.c so that it can make
6  *      use of all of the static functions.
7  **/
8
9 static inline char * __init machine_specific_memory_setup(void)
10 {
11         char *who;
12
13
14         who = "BIOS-e820";
15
16         /*
17          * Try to copy the BIOS-supplied E820-map.
18          *
19          * Otherwise fake a memory map; one section from 0k->640k,
20          * the next section from 1mb->appropriate_mem_k
21          */
22         sanitize_e820_map(E820_MAP, &E820_MAP_NR);
23         if (copy_e820_map(E820_MAP, E820_MAP_NR) < 0) {
24                 unsigned long mem_size;
25
26                 /* compare results from other methods and take the greater */
27                 if (ALT_MEM_K < EXT_MEM_K) {
28                         mem_size = EXT_MEM_K;
29                         who = "BIOS-88";
30                 } else {
31                         mem_size = ALT_MEM_K;
32                         who = "BIOS-e801";
33                 }
34
35                 e820.nr_map = 0;
36                 add_memory_region(0, LOWMEMSIZE(), E820_RAM);
37                 add_memory_region(HIGH_MEMORY, mem_size << 10, E820_RAM);
38         }
39         return who;
40 }