page_32.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef _ASM_POWERPC_PAGE_32_H
  2. #define _ASM_POWERPC_PAGE_32_H
  3. #ifdef __KERNEL__
  4. #define VM_DATA_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS32
  5. #define PPC_MEMSTART 0
  6. #ifndef __ASSEMBLY__
  7. /*
  8. * The basic type of a PTE - 64 bits for those CPUs with > 32 bit
  9. * physical addressing. For now this just the IBM PPC440.
  10. */
  11. #ifdef CONFIG_PTE_64BIT
  12. typedef unsigned long long pte_basic_t;
  13. #define PTE_SHIFT (PAGE_SHIFT - 3) /* 512 ptes per page */
  14. #define PTE_FMT "%16Lx"
  15. #else
  16. typedef unsigned long pte_basic_t;
  17. #define PTE_SHIFT (PAGE_SHIFT - 2) /* 1024 ptes per page */
  18. #define PTE_FMT "%.8lx"
  19. #endif
  20. struct page;
  21. extern void clear_pages(void *page, int order);
  22. static inline void clear_page(void *page) { clear_pages(page, 0); }
  23. extern void copy_page(void *to, void *from);
  24. /* Pure 2^n version of get_order */
  25. extern __inline__ int get_order(unsigned long size)
  26. {
  27. int lz;
  28. size = (size-1) >> PAGE_SHIFT;
  29. asm ("cntlzw %0,%1" : "=r" (lz) : "r" (size));
  30. return 32 - lz;
  31. }
  32. #endif /* __ASSEMBLY__ */
  33. #endif /* __KERNEL__ */
  34. #endif /* _ASM_POWERPC_PAGE_32_H */