Arm9CacheInformation.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /** @file
  2. Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
  3. Copyright (c) 2014, ARM Limited. All rights reserved.
  4. This program and the accompanying materials
  5. are licensed and made available under the terms and conditions of the BSD License
  6. which accompanies this distribution. The full text of the license may be found at
  7. http://opensource.org/licenses/bsd-license.php
  8. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
  10. **/
  11. #include <Library/ArmLib.h>
  12. #include "ArmLibPrivate.h"
  13. ARM_CACHE_TYPE
  14. EFIAPI
  15. ArmCacheType (
  16. VOID
  17. )
  18. {
  19. switch (CACHE_TYPE (ArmCacheInfo ()))
  20. {
  21. case CACHE_TYPE_WRITE_BACK: return ARM_CACHE_TYPE_WRITE_BACK;
  22. default: return ARM_CACHE_TYPE_UNKNOWN;
  23. }
  24. }
  25. ARM_CACHE_ARCHITECTURE
  26. EFIAPI
  27. ArmCacheArchitecture (
  28. VOID
  29. )
  30. {
  31. switch (CACHE_ARCHITECTURE (ArmCacheInfo ()))
  32. {
  33. case CACHE_ARCHITECTURE_UNIFIED: return ARM_CACHE_ARCHITECTURE_UNIFIED;
  34. case CACHE_ARCHITECTURE_SEPARATE: return ARM_CACHE_ARCHITECTURE_SEPARATE;
  35. default: return ARM_CACHE_ARCHITECTURE_UNKNOWN;
  36. }
  37. }
  38. BOOLEAN
  39. EFIAPI
  40. ArmDataCachePresent (
  41. VOID
  42. )
  43. {
  44. switch (DATA_CACHE_PRESENT (ArmCacheInfo ()))
  45. {
  46. case CACHE_PRESENT: return TRUE;
  47. case CACHE_NOT_PRESENT: return FALSE;
  48. default: return FALSE;
  49. }
  50. }
  51. UINTN
  52. EFIAPI
  53. ArmDataCacheSize (
  54. VOID
  55. )
  56. {
  57. switch (DATA_CACHE_SIZE (ArmCacheInfo ()))
  58. {
  59. case CACHE_SIZE_4_KB: return 4 * 1024;
  60. case CACHE_SIZE_8_KB: return 8 * 1024;
  61. case CACHE_SIZE_16_KB: return 16 * 1024;
  62. case CACHE_SIZE_32_KB: return 32 * 1024;
  63. case CACHE_SIZE_64_KB: return 64 * 1024;
  64. case CACHE_SIZE_128_KB: return 128 * 1024;
  65. default: return 0;
  66. }
  67. }
  68. UINTN
  69. EFIAPI
  70. ArmDataCacheAssociativity (
  71. VOID
  72. )
  73. {
  74. switch (DATA_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
  75. {
  76. case CACHE_ASSOCIATIVITY_4_WAY: return 4;
  77. case CACHE_ASSOCIATIVITY_DIRECT: return 1;
  78. default: return 0;
  79. }
  80. }
  81. UINTN
  82. EFIAPI
  83. ArmDataCacheLineLength (
  84. VOID
  85. )
  86. {
  87. switch (DATA_CACHE_LINE_LENGTH (ArmCacheInfo ()))
  88. {
  89. case CACHE_LINE_LENGTH_32_BYTES: return 32;
  90. default: return 0;
  91. }
  92. }
  93. BOOLEAN
  94. EFIAPI
  95. ArmInstructionCachePresent (
  96. VOID
  97. )
  98. {
  99. switch (INSTRUCTION_CACHE_PRESENT (ArmCacheInfo ()))
  100. {
  101. case CACHE_PRESENT: return TRUE;
  102. case CACHE_NOT_PRESENT: return FALSE;
  103. default: return FALSE;
  104. }
  105. }
  106. UINTN
  107. EFIAPI
  108. ArmInstructionCacheSize (
  109. VOID
  110. )
  111. {
  112. switch (INSTRUCTION_CACHE_SIZE (ArmCacheInfo ()))
  113. {
  114. case CACHE_SIZE_4_KB: return 4 * 1024;
  115. case CACHE_SIZE_8_KB: return 8 * 1024;
  116. case CACHE_SIZE_16_KB: return 16 * 1024;
  117. case CACHE_SIZE_32_KB: return 32 * 1024;
  118. case CACHE_SIZE_64_KB: return 64 * 1024;
  119. case CACHE_SIZE_128_KB: return 128 * 1024;
  120. default: return 0;
  121. }
  122. }
  123. UINTN
  124. EFIAPI
  125. ArmInstructionCacheAssociativity (
  126. VOID
  127. )
  128. {
  129. switch (INSTRUCTION_CACHE_ASSOCIATIVITY (ArmCacheInfo ()))
  130. {
  131. case CACHE_ASSOCIATIVITY_8_WAY: return 8;
  132. case CACHE_ASSOCIATIVITY_4_WAY: return 4;
  133. case CACHE_ASSOCIATIVITY_DIRECT: return 1;
  134. default: return 0;
  135. }
  136. }
  137. UINTN
  138. EFIAPI
  139. ArmInstructionCacheLineLength (
  140. VOID
  141. )
  142. {
  143. switch (INSTRUCTION_CACHE_LINE_LENGTH (ArmCacheInfo ()))
  144. {
  145. case CACHE_LINE_LENGTH_32_BYTES: return 32;
  146. default: return 0;
  147. }
  148. }