pte-book3e.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #ifndef _ASM_POWERPC_PTE_BOOK3E_H
  2. #define _ASM_POWERPC_PTE_BOOK3E_H
  3. #ifdef __KERNEL__
  4. /* PTE bit definitions for processors compliant to the Book3E
  5. * architecture 2.06 or later. The position of the PTE bits
  6. * matches the HW definition of the optional Embedded Page Table
  7. * category.
  8. */
  9. /* Architected bits */
  10. #define _PAGE_PRESENT 0x000001 /* software: pte contains a translation */
  11. #define _PAGE_SW1 0x000002
  12. #define _PAGE_BIT_SWAP_TYPE 2
  13. #define _PAGE_BAP_SR 0x000004
  14. #define _PAGE_BAP_UR 0x000008
  15. #define _PAGE_BAP_SW 0x000010
  16. #define _PAGE_BAP_UW 0x000020
  17. #define _PAGE_BAP_SX 0x000040
  18. #define _PAGE_BAP_UX 0x000080
  19. #define _PAGE_PSIZE_MSK 0x000f00
  20. #define _PAGE_PSIZE_4K 0x000200
  21. #define _PAGE_PSIZE_8K 0x000300
  22. #define _PAGE_PSIZE_16K 0x000400
  23. #define _PAGE_PSIZE_32K 0x000500
  24. #define _PAGE_PSIZE_64K 0x000600
  25. #define _PAGE_PSIZE_128K 0x000700
  26. #define _PAGE_PSIZE_256K 0x000800
  27. #define _PAGE_PSIZE_512K 0x000900
  28. #define _PAGE_PSIZE_1M 0x000a00
  29. #define _PAGE_PSIZE_2M 0x000b00
  30. #define _PAGE_PSIZE_4M 0x000c00
  31. #define _PAGE_PSIZE_8M 0x000d00
  32. #define _PAGE_PSIZE_16M 0x000e00
  33. #define _PAGE_PSIZE_32M 0x000f00
  34. #define _PAGE_DIRTY 0x001000 /* C: page changed */
  35. #define _PAGE_SW0 0x002000
  36. #define _PAGE_U3 0x004000
  37. #define _PAGE_U2 0x008000
  38. #define _PAGE_U1 0x010000
  39. #define _PAGE_U0 0x020000
  40. #define _PAGE_ACCESSED 0x040000
  41. #define _PAGE_ENDIAN 0x080000
  42. #define _PAGE_GUARDED 0x100000
  43. #define _PAGE_COHERENT 0x200000 /* M: enforce memory coherence */
  44. #define _PAGE_NO_CACHE 0x400000 /* I: cache inhibit */
  45. #define _PAGE_WRITETHRU 0x800000 /* W: cache write-through */
  46. /* "Higher level" linux bit combinations */
  47. #define _PAGE_EXEC _PAGE_BAP_UX /* .. and was cache cleaned */
  48. #define _PAGE_RW (_PAGE_BAP_SW | _PAGE_BAP_UW) /* User write permission */
  49. #define _PAGE_KERNEL_RW (_PAGE_BAP_SW | _PAGE_BAP_SR | _PAGE_DIRTY)
  50. #define _PAGE_KERNEL_RO (_PAGE_BAP_SR)
  51. #define _PAGE_KERNEL_RWX (_PAGE_BAP_SW | _PAGE_BAP_SR | _PAGE_DIRTY | _PAGE_BAP_SX)
  52. #define _PAGE_KERNEL_ROX (_PAGE_BAP_SR | _PAGE_BAP_SX)
  53. #define _PAGE_USER (_PAGE_BAP_UR | _PAGE_BAP_SR) /* Can be read */
  54. #define _PAGE_HASHPTE 0
  55. #define _PAGE_BUSY 0
  56. #define _PAGE_SPECIAL _PAGE_SW0
  57. /* Flags to be preserved on PTE modifications */
  58. #define _PAGE_HPTEFLAGS _PAGE_BUSY
  59. /* Base page size */
  60. #ifdef CONFIG_PPC_64K_PAGES
  61. #define _PAGE_PSIZE _PAGE_PSIZE_64K
  62. #define PTE_RPN_SHIFT (28)
  63. #else
  64. #define _PAGE_PSIZE _PAGE_PSIZE_4K
  65. #define PTE_RPN_SHIFT (24)
  66. #endif
  67. #define PTE_WIMGE_SHIFT (19)
  68. #define PTE_BAP_SHIFT (2)
  69. /* On 32-bit, we never clear the top part of the PTE */
  70. #ifdef CONFIG_PPC32
  71. #define _PTE_NONE_MASK 0xffffffff00000000ULL
  72. #define _PMD_PRESENT 0
  73. #define _PMD_PRESENT_MASK (PAGE_MASK)
  74. #define _PMD_BAD (~PAGE_MASK)
  75. #endif
  76. #endif /* __KERNEL__ */
  77. #endif /* _ASM_POWERPC_PTE_FSL_BOOKE_H */