mmu-book3e.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef _ASM_POWERPC_MMU_BOOK3E_H_
  2. #define _ASM_POWERPC_MMU_BOOK3E_H_
  3. /*
  4. * Freescale Book-E/Book-3e (ISA 2.06+) MMU support
  5. */
  6. /* Book-3e defined page sizes */
  7. #define BOOK3E_PAGESZ_1K 0
  8. #define BOOK3E_PAGESZ_2K 1
  9. #define BOOK3E_PAGESZ_4K 2
  10. #define BOOK3E_PAGESZ_8K 3
  11. #define BOOK3E_PAGESZ_16K 4
  12. #define BOOK3E_PAGESZ_32K 5
  13. #define BOOK3E_PAGESZ_64K 6
  14. #define BOOK3E_PAGESZ_128K 7
  15. #define BOOK3E_PAGESZ_256K 8
  16. #define BOOK3E_PAGESZ_512K 9
  17. #define BOOK3E_PAGESZ_1M 10
  18. #define BOOK3E_PAGESZ_2M 11
  19. #define BOOK3E_PAGESZ_4M 12
  20. #define BOOK3E_PAGESZ_8M 13
  21. #define BOOK3E_PAGESZ_16M 14
  22. #define BOOK3E_PAGESZ_32M 15
  23. #define BOOK3E_PAGESZ_64M 16
  24. #define BOOK3E_PAGESZ_128M 17
  25. #define BOOK3E_PAGESZ_256M 18
  26. #define BOOK3E_PAGESZ_512M 19
  27. #define BOOK3E_PAGESZ_1GB 20
  28. #define BOOK3E_PAGESZ_2GB 21
  29. #define BOOK3E_PAGESZ_4GB 22
  30. #define BOOK3E_PAGESZ_8GB 23
  31. #define BOOK3E_PAGESZ_16GB 24
  32. #define BOOK3E_PAGESZ_32GB 25
  33. #define BOOK3E_PAGESZ_64GB 26
  34. #define BOOK3E_PAGESZ_128GB 27
  35. #define BOOK3E_PAGESZ_256GB 28
  36. #define BOOK3E_PAGESZ_512GB 29
  37. #define BOOK3E_PAGESZ_1TB 30
  38. #define BOOK3E_PAGESZ_2TB 31
  39. #define MAS0_TLBSEL(x) ((x << 28) & 0x30000000)
  40. #define MAS0_ESEL(x) ((x << 16) & 0x0FFF0000)
  41. #define MAS0_NV(x) ((x) & 0x00000FFF)
  42. #define MAS1_VALID 0x80000000
  43. #define MAS1_IPROT 0x40000000
  44. #define MAS1_TID(x) ((x << 16) & 0x3FFF0000)
  45. #define MAS1_IND 0x00002000
  46. #define MAS1_TS 0x00001000
  47. #define MAS1_TSIZE(x) ((x << 7) & 0x00000F80)
  48. #define MAS2_EPN 0xFFFFF000
  49. #define MAS2_X0 0x00000040
  50. #define MAS2_X1 0x00000020
  51. #define MAS2_W 0x00000010
  52. #define MAS2_I 0x00000008
  53. #define MAS2_M 0x00000004
  54. #define MAS2_G 0x00000002
  55. #define MAS2_E 0x00000001
  56. #define MAS2_EPN_MASK(size) (~0 << (size + 10))
  57. #define MAS2_VAL(addr, size, flags) ((addr) & MAS2_EPN_MASK(size) | (flags))
  58. #define MAS3_RPN 0xFFFFF000
  59. #define MAS3_U0 0x00000200
  60. #define MAS3_U1 0x00000100
  61. #define MAS3_U2 0x00000080
  62. #define MAS3_U3 0x00000040
  63. #define MAS3_UX 0x00000020
  64. #define MAS3_SX 0x00000010
  65. #define MAS3_UW 0x00000008
  66. #define MAS3_SW 0x00000004
  67. #define MAS3_UR 0x00000002
  68. #define MAS3_SR 0x00000001
  69. #define MAS4_TLBSELD(x) MAS0_TLBSEL(x)
  70. #define MAS4_INDD 0x00008000
  71. #define MAS4_TSIZED(x) MAS1_TSIZE(x)
  72. #define MAS4_X0D 0x00000040
  73. #define MAS4_X1D 0x00000020
  74. #define MAS4_WD 0x00000010
  75. #define MAS4_ID 0x00000008
  76. #define MAS4_MD 0x00000004
  77. #define MAS4_GD 0x00000002
  78. #define MAS4_ED 0x00000001
  79. #define MAS6_SPID0 0x3FFF0000
  80. #define MAS6_SPID1 0x00007FFE
  81. #define MAS6_ISIZE(x) MAS1_TSIZE(x)
  82. #define MAS6_SAS 0x00000001
  83. #define MAS6_SPID MAS6_SPID0
  84. #define MAS7_RPN 0xFFFFFFFF
  85. #ifndef __ASSEMBLY__
  86. extern unsigned int tlbcam_index;
  87. typedef struct {
  88. unsigned int id;
  89. unsigned int active;
  90. unsigned long vdso_base;
  91. } mm_context_t;
  92. #endif /* !__ASSEMBLY__ */
  93. #endif /* _ASM_POWERPC_MMU_BOOK3E_H_ */