page_32.h 1015 B

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