home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-x86_64 / e820.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.0 KB  |  67 lines

  1. /*
  2.  * structures and definitions for the int 15, ax=e820 memory map
  3.  * scheme.
  4.  *
  5.  * In a nutshell, setup.S populates a scratch table in the
  6.  * empty_zero_block that contains a list of usable address/size
  7.  * duples.  setup.c, this information is transferred into the e820map,
  8.  * and in init.c/numa.c, that new information is used to mark pages
  9.  * reserved or not.
  10.  */
  11. #ifndef __E820_HEADER
  12. #define __E820_HEADER
  13.  
  14. #include <linux/mmzone.h>
  15.  
  16. #define E820MAP    0x2d0        /* our map */
  17. #define E820MAX    128        /* number of entries in E820MAP */
  18. #define E820NR    0x1e8        /* # entries in E820MAP */
  19.  
  20. #define E820_RAM    1
  21. #define E820_RESERVED    2
  22. #define E820_ACPI    3 /* usable as RAM once ACPI tables have been read */
  23. #define E820_NVS    4
  24.  
  25. #define HIGH_MEMORY    (1024*1024)
  26.  
  27. #define LOWMEMSIZE()    (0x9f000)
  28.  
  29. #ifndef __ASSEMBLY__
  30. struct e820entry {
  31.     u64 addr;    /* start of memory segment */
  32.     u64 size;    /* size of memory segment */
  33.     u32 type;    /* type of memory segment */
  34. } __attribute__((packed));
  35.  
  36. struct e820map {
  37.     int nr_map;
  38.     struct e820entry map[E820MAX];
  39. };
  40.  
  41. extern unsigned long find_e820_area(unsigned long start, unsigned long end, 
  42.                     unsigned size);
  43. extern void add_memory_region(unsigned long start, unsigned long size, 
  44.                   int type);
  45. extern void setup_memory_region(void);
  46. extern void contig_e820_setup(void); 
  47. extern unsigned long e820_end_of_ram(void);
  48. extern void e820_reserve_resources(void);
  49. extern void e820_print_map(char *who);
  50. extern int e820_any_mapped(unsigned long start, unsigned long end, unsigned type);
  51. extern int e820_all_mapped(unsigned long start, unsigned long end, unsigned type);
  52.  
  53. extern void e820_bootmem_free(pg_data_t *pgdat, unsigned long start,unsigned long end);
  54. extern void e820_setup_gap(void);
  55. extern unsigned long e820_hole_size(unsigned long start_pfn,
  56.                     unsigned long end_pfn);
  57.  
  58. extern void __init parse_memopt(char *p, char **end);
  59. extern void __init parse_memmapopt(char *p, char **end);
  60.  
  61. extern struct e820map e820;
  62.  
  63. extern unsigned ebda_addr, ebda_size;
  64. #endif/*!__ASSEMBLY__*/
  65.  
  66. #endif/*__E820_HEADER*/
  67.