shared.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. .mask = _PAGE_USER,
  13. .val = _PAGE_USER,
  14. .set = "user",
  15. .clear = " ",
  16. }, {
  17. .mask = _PAGE_RW,
  18. .val = 0,
  19. .set = "r ",
  20. .clear = "rw",
  21. }, {
  22. .mask = _PAGE_EXEC,
  23. .val = _PAGE_EXEC,
  24. .set = " X ",
  25. .clear = " ",
  26. }, {
  27. .mask = _PAGE_PRESENT,
  28. .val = _PAGE_PRESENT,
  29. .set = "present",
  30. .clear = " ",
  31. }, {
  32. .mask = _PAGE_COHERENT,
  33. .val = _PAGE_COHERENT,
  34. .set = "coherent",
  35. .clear = " ",
  36. }, {
  37. .mask = _PAGE_GUARDED,
  38. .val = _PAGE_GUARDED,
  39. .set = "guarded",
  40. .clear = " ",
  41. }, {
  42. .mask = _PAGE_DIRTY,
  43. .val = _PAGE_DIRTY,
  44. .set = "dirty",
  45. .clear = " ",
  46. }, {
  47. .mask = _PAGE_ACCESSED,
  48. .val = _PAGE_ACCESSED,
  49. .set = "accessed",
  50. .clear = " ",
  51. }, {
  52. .mask = _PAGE_WRITETHRU,
  53. .val = _PAGE_WRITETHRU,
  54. .set = "write through",
  55. .clear = " ",
  56. }, {
  57. .mask = _PAGE_NO_CACHE,
  58. .val = _PAGE_NO_CACHE,
  59. .set = "no cache",
  60. .clear = " ",
  61. }, {
  62. .mask = _PAGE_SPECIAL,
  63. .val = _PAGE_SPECIAL,
  64. .set = "special",
  65. }
  66. };
  67. struct pgtable_level pg_level[5] = {
  68. { /* pgd */
  69. .flag = flag_array,
  70. .num = ARRAY_SIZE(flag_array),
  71. }, { /* p4d */
  72. .flag = flag_array,
  73. .num = ARRAY_SIZE(flag_array),
  74. }, { /* pud */
  75. .flag = flag_array,
  76. .num = ARRAY_SIZE(flag_array),
  77. }, { /* pmd */
  78. .flag = flag_array,
  79. .num = ARRAY_SIZE(flag_array),
  80. }, { /* pte */
  81. .flag = flag_array,
  82. .num = ARRAY_SIZE(flag_array),
  83. },
  84. };