/** @file Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include #include "ArmLibPrivate.h" ARM_CACHE_TYPE EFIAPI ArmCacheType ( VOID ) { switch (CACHE_TYPE(Cp15CacheInfo())) { case CACHE_TYPE_WRITE_BACK: return ARM_CACHE_TYPE_WRITE_BACK; default: return ARM_CACHE_TYPE_UNKNOWN; } } ARM_CACHE_ARCHITECTURE EFIAPI ArmCacheArchitecture ( VOID ) { switch (CACHE_ARCHITECTURE(Cp15CacheInfo())) { case CACHE_ARCHITECTURE_UNIFIED: return ARM_CACHE_ARCHITECTURE_UNIFIED; case CACHE_ARCHITECTURE_SEPARATE: return ARM_CACHE_ARCHITECTURE_SEPARATE; default: return ARM_CACHE_ARCHITECTURE_UNKNOWN; } } BOOLEAN EFIAPI ArmDataCachePresent ( VOID ) { switch (DATA_CACHE_PRESENT(Cp15CacheInfo())) { case CACHE_PRESENT: return TRUE; case CACHE_NOT_PRESENT: return FALSE; default: return FALSE; } } UINTN EFIAPI ArmDataCacheSize ( VOID ) { switch (DATA_CACHE_SIZE(Cp15CacheInfo())) { case CACHE_SIZE_4_KB: return 4 * 1024; case CACHE_SIZE_8_KB: return 8 * 1024; case CACHE_SIZE_16_KB: return 16 * 1024; case CACHE_SIZE_32_KB: return 32 * 1024; case CACHE_SIZE_64_KB: return 64 * 1024; case CACHE_SIZE_128_KB: return 128 * 1024; default: return 0; } } UINTN EFIAPI ArmDataCacheAssociativity ( VOID ) { switch (DATA_CACHE_ASSOCIATIVITY(Cp15CacheInfo())) { case CACHE_ASSOCIATIVITY_4_WAY: return 4; case CACHE_ASSOCIATIVITY_DIRECT: return 1; default: return 0; } } UINTN EFIAPI ArmDataCacheLineLength ( VOID ) { switch (DATA_CACHE_LINE_LENGTH(Cp15CacheInfo())) { case CACHE_LINE_LENGTH_32_BYTES: return 32; default: return 0; } } BOOLEAN EFIAPI ArmInstructionCachePresent ( VOID ) { switch (INSTRUCTION_CACHE_PRESENT(Cp15CacheInfo())) { case CACHE_PRESENT: return TRUE; case CACHE_NOT_PRESENT: return FALSE; default: return FALSE; } } UINTN EFIAPI ArmInstructionCacheSize ( VOID ) { switch (INSTRUCTION_CACHE_SIZE(Cp15CacheInfo())) { case CACHE_SIZE_4_KB: return 4 * 1024; case CACHE_SIZE_8_KB: return 8 * 1024; case CACHE_SIZE_16_KB: return 16 * 1024; case CACHE_SIZE_32_KB: return 32 * 1024; case CACHE_SIZE_64_KB: return 64 * 1024; case CACHE_SIZE_128_KB: return 128 * 1024; default: return 0; } } UINTN EFIAPI ArmInstructionCacheAssociativity ( VOID ) { switch (INSTRUCTION_CACHE_ASSOCIATIVITY(Cp15CacheInfo())) { case CACHE_ASSOCIATIVITY_8_WAY: return 8; case CACHE_ASSOCIATIVITY_4_WAY: return 4; case CACHE_ASSOCIATIVITY_DIRECT: return 1; default: return 0; } } UINTN EFIAPI ArmInstructionCacheLineLength ( VOID ) { switch (INSTRUCTION_CACHE_LINE_LENGTH(Cp15CacheInfo())) { case CACHE_LINE_LENGTH_32_BYTES: return 32; default: return 0; } }