e820.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef __ASM_E820_H
  2. #define __ASM_E820_H
  3. #define E820MAP 0x2d0 /* our map */
  4. #define E820MAX 128 /* number of entries in E820MAP */
  5. #define E820NR 0x1e8 /* # entries in E820MAP */
  6. #define E820_RAM 1
  7. #define E820_RESERVED 2
  8. #define E820_ACPI 3
  9. #define E820_NVS 4
  10. #ifndef __ASSEMBLY__
  11. struct e820entry {
  12. __u64 addr; /* start of memory segment */
  13. __u64 size; /* size of memory segment */
  14. __u32 type; /* type of memory segment */
  15. } __attribute__((packed));
  16. struct e820map {
  17. __u32 nr_map;
  18. struct e820entry map[E820MAX];
  19. };
  20. extern struct e820map e820;
  21. extern int e820_any_mapped(u64 start, u64 end, unsigned type);
  22. extern int e820_all_mapped(u64 start, u64 end, unsigned type);
  23. extern void add_memory_region(u64 start, u64 size, int type);
  24. extern void e820_print_map(char *who);
  25. extern int
  26. sanitize_e820_map(struct e820entry *biosmap, int max_nr_map, char *pnr_map);
  27. extern int copy_e820_map(struct e820entry *biosmap, int nr_map);
  28. extern u64 update_memory_range(u64 start, u64 size, unsigned old_type,
  29. unsigned new_type);
  30. extern void update_e820(void);
  31. extern void e820_setup_gap(void);
  32. #endif /* __ASSEMBLY__ */
  33. #define ISA_START_ADDRESS 0xa0000
  34. #define ISA_END_ADDRESS 0x100000
  35. #define BIOS_BEGIN 0x000a0000
  36. #define BIOS_END 0x00100000
  37. #ifdef __KERNEL__
  38. #ifdef CONFIG_X86_32
  39. # include "e820_32.h"
  40. #else
  41. # include "e820_64.h"
  42. #endif
  43. #endif /* __KERNEL__ */
  44. #endif /* __ASM_E820_H */