Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel'
[palacios.git] / kitten / include / arch-x86_64 / e820.h
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 _ARCH_E820_H
12 #define _ARCH_E820_H
13
14 #include <lwk/init.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(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 #endif /* !__ASSEMBLY__ */
64
65 #endif /* _ARCH_E820_H */