page_32.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _I386_PAGE_H
  2. #define _I386_PAGE_H
  3. #ifdef __KERNEL__
  4. #ifndef __ASSEMBLY__
  5. /*
  6. * These are used to make use of C type-checking..
  7. */
  8. extern int nx_enabled;
  9. #endif /* !__ASSEMBLY__ */
  10. #ifndef __ASSEMBLY__
  11. struct vm_area_struct;
  12. /*
  13. * This much address space is reserved for vmalloc() and iomap()
  14. * as well as fixmap mappings.
  15. */
  16. extern unsigned int __VMALLOC_RESERVE;
  17. extern int sysctl_legacy_va_layout;
  18. extern int page_is_ram(unsigned long pagenr);
  19. #endif /* __ASSEMBLY__ */
  20. #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
  21. #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)
  22. #define __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
  23. /* __pa_symbol should be used for C visible symbols.
  24. This seems to be the official gcc blessed way to do such arithmetic. */
  25. #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x),0))
  26. #define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
  27. #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
  28. #ifdef CONFIG_FLATMEM
  29. #define pfn_valid(pfn) ((pfn) < max_mapnr)
  30. #endif /* CONFIG_FLATMEM */
  31. #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
  32. #define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
  33. #include <asm-generic/memory_model.h>
  34. #include <asm-generic/page.h>
  35. #define __HAVE_ARCH_GATE_AREA 1
  36. #endif /* __KERNEL__ */
  37. #endif /* _I386_PAGE_H */