ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-i386 / mach-pc9800 / 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         unsigned long low_mem_size, lower_high, higher_high;
13
14
15         who = "BIOS (common area)";
16
17         low_mem_size = ((*(unsigned char *)__va(PC9800SCA_BIOS_FLAG) & 7) + 1) << 17;
18         add_memory_region(0, low_mem_size, 1);
19         lower_high = (__u32) *(__u8 *) bus_to_virt(PC9800SCA_EXPMMSZ) << 17;
20         higher_high = (__u32) *(__u16 *) bus_to_virt(PC9800SCA_MMSZ16M) << 20;
21         if (lower_high != 0x00f00000UL) {
22                 add_memory_region(HIGH_MEMORY, lower_high, 1);
23                 add_memory_region(0x01000000UL, higher_high, 1);
24         }
25         else
26                 add_memory_region(HIGH_MEMORY, lower_high + higher_high, 1);
27
28         return who;
29 }