2005-04-16 15:20:36 -07:00
/*
* structures and definitions for the int 15 , ax = e820 memory map
* scheme .
*
* In a nutshell , setup . S populates a scratch table in the
* empty_zero_block that contains a list of usable address / size
* duples . setup . c , this information is transferred into the e820map ,
* and in init . c / numa . c , that new information is used to mark pages
* reserved or not .
*/
# ifndef __E820_HEADER
# define __E820_HEADER
# include <linux/mmzone.h>
# 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
# ifndef __ASSEMBLY__
struct e820entry {
u64 addr ; /* start of memory segment */
u64 size ; /* size of memory segment */
u32 type ; /* type of memory segment */
} __attribute__ ( ( packed ) ) ;
struct e820map {
int nr_map ;
struct e820entry map [ E820MAX ] ;
} ;
extern unsigned long find_e820_area ( unsigned long start , unsigned long end ,
unsigned size ) ;
extern void add_memory_region ( unsigned long start , unsigned long size ,
int type ) ;
extern void setup_memory_region ( void ) ;
extern void contig_e820_setup ( void ) ;
extern unsigned long e820_end_of_ram ( void ) ;
extern void e820_reserve_resources ( void ) ;
2006-09-25 23:32:46 -07:00
extern void e820_mark_nosave_regions ( void ) ;
2005-04-16 15:20:36 -07:00
extern void e820_print_map ( char * who ) ;
2006-04-07 19:49:24 +02:00
extern int e820_any_mapped ( unsigned long start , unsigned long end , unsigned type ) ;
2006-04-07 19:49:27 +02:00
extern int e820_all_mapped ( unsigned long start , unsigned long end , unsigned type ) ;
2007-02-13 13:26:22 +01:00
extern unsigned long e820_hole_size ( unsigned long start , unsigned long end ) ;
2005-04-16 15:20:36 -07:00
2005-04-16 15:25:12 -07:00
extern void e820_setup_gap ( void ) ;
2006-09-27 01:49:52 -07:00
extern void e820_register_active_regions ( int nid ,
unsigned long start_pfn , unsigned long end_pfn ) ;
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:32 +02:00
extern void finish_e820_parsing ( void ) ;
2005-04-16 15:20:36 -07:00
extern struct e820map e820 ;
2006-05-08 15:17:28 +02:00
extern unsigned ebda_addr , ebda_size ;
2007-02-13 13:26:19 +01:00
extern unsigned long nodemap_addr , nodemap_size ;
2005-04-16 15:20:36 -07:00
# endif /*!__ASSEMBLY__*/
# endif /*__E820_HEADER*/