2005-04-16 15:20:36 -07:00
/*
* structures and definitions for the int 15 , ax = e820 memory map
* scheme .
*
* In a nutshell , arch / i386 / boot / setup . S populates a scratch table
* in the empty_zero_block that contains a list of usable address / size
* duples . In arch / i386 / kernel / setup . c , this information is
* transferred into the e820map , and in arch / i386 / mm / init . c , that
* new information is used to mark pages reserved or not .
*
*/
# ifndef __E820_HEADER
# define __E820_HEADER
# define E820MAP 0x2d0 /* our map */
2005-05-01 08:58:51 -07:00
# define E820MAX 128 /* number of entries in E820MAP */
2005-04-16 15:20:36 -07:00
# define E820NR 0x1e8 /* # entries in E820MAP */
# define E820_RAM 1
# define E820_RESERVED 2
2006-09-26 10:52:38 +02:00
# define E820_ACPI 3
2005-04-16 15:20:36 -07:00
# define E820_NVS 4
# define HIGH_MEMORY (1024*1024)
# ifndef __ASSEMBLY__
struct e820map {
int nr_map ;
struct e820entry {
unsigned long long addr ; /* start of memory segment */
unsigned long long size ; /* size of memory segment */
unsigned long type ; /* type of memory segment */
} map [ E820MAX ] ;
} ;
extern struct e820map e820 ;
2006-04-07 19:49:27 +02:00
extern int e820_all_mapped ( unsigned long start , unsigned long end ,
unsigned type ) ;
2006-12-07 02:14:06 +01:00
extern void find_max_pfn ( void ) ;
2006-12-07 02:14:06 +01:00
extern void register_bootmem_low_pages ( unsigned long max_low_pfn ) ;
extern void register_memory ( void ) ;
2006-12-07 02:14:06 +01:00
extern void limit_regions ( unsigned long long size ) ;
extern void print_memory_map ( char * who ) ;
2006-04-07 19:49:27 +02:00
2005-04-16 15:20:36 -07:00
# endif /*!__ASSEMBLY__*/
# endif /*__E820_HEADER*/