8xx.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * From split of dump_linuxpagetables.c
  4. * Copyright 2016, Rashmica Gupta, IBM Corp.
  5. *
  6. */
  7. #include <linux/kernel.h>
  8. #include <linux/pgtable.h>
  9. #include "ptdump.h"
  10. static const struct flag_info flag_array[] = {
  11. {
  12. #ifdef CONFIG_PPC_16K_PAGES
  13. .mask = _PAGE_HUGE,
  14. .val = _PAGE_HUGE,
  15. #else
  16. .mask = _PAGE_SPS,
  17. .val = _PAGE_SPS,
  18. #endif
  19. .set = "huge",
  20. .clear = " ",
  21. }, {
  22. .mask = _PAGE_SH,
  23. .val = 0,
  24. .set = "user",
  25. .clear = " ",
  26. }, {
  27. .mask = _PAGE_RO | _PAGE_NA,
  28. .val = 0,
  29. .set = "rw",
  30. }, {
  31. .mask = _PAGE_RO | _PAGE_NA,
  32. .val = _PAGE_RO,
  33. .set = "r ",
  34. }, {
  35. .mask = _PAGE_RO | _PAGE_NA,
  36. .val = _PAGE_NA,
  37. .set = " ",
  38. }, {
  39. .mask = _PAGE_EXEC,
  40. .val = _PAGE_EXEC,
  41. .set = " X ",
  42. .clear = " ",
  43. }, {
  44. .mask = _PAGE_PRESENT,
  45. .val = _PAGE_PRESENT,
  46. .set = "present",
  47. .clear = " ",
  48. }, {
  49. .mask = _PAGE_GUARDED,
  50. .val = _PAGE_GUARDED,
  51. .set = "guarded",
  52. .clear = " ",
  53. }, {
  54. .mask = _PAGE_DIRTY,
  55. .val = _PAGE_DIRTY,
  56. .set = "dirty",
  57. .clear = " ",
  58. }, {
  59. .mask = _PAGE_ACCESSED,
  60. .val = _PAGE_ACCESSED,
  61. .set = "accessed",
  62. .clear = " ",
  63. }, {
  64. .mask = _PAGE_NO_CACHE,
  65. .val = _PAGE_NO_CACHE,
  66. .set = "no cache",
  67. .clear = " ",
  68. }, {
  69. .mask = _PAGE_SPECIAL,
  70. .val = _PAGE_SPECIAL,
  71. .set = "special",
  72. }
  73. };
  74. struct pgtable_level pg_level[5] = {
  75. { /* pgd */
  76. .flag = flag_array,
  77. .num = ARRAY_SIZE(flag_array),
  78. }, { /* p4d */
  79. .flag = flag_array,
  80. .num = ARRAY_SIZE(flag_array),
  81. }, { /* pud */
  82. .flag = flag_array,
  83. .num = ARRAY_SIZE(flag_array),
  84. }, { /* pmd */
  85. .flag = flag_array,
  86. .num = ARRAY_SIZE(flag_array),
  87. }, { /* pte */
  88. .flag = flag_array,
  89. .num = ARRAY_SIZE(flag_array),
  90. },
  91. };