mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-17 10:44:24 +02:00
Suspiciously, ArmLib's INF does not contain a [LibraryClasses] section at all, but it turns out that all the library includes it contains (except for ArmLib.h itself) are actually bogus so let's just drop all of them. While at it, replace <Uefi.h> with the more accurate <Base.h> for a BASE type module, and put the includes in a consistent order. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
100 lines
1.4 KiB
C
100 lines
1.4 KiB
C
/** @file
|
|
|
|
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
|
Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include <Base.h>
|
|
|
|
#include <Library/ArmLib.h>
|
|
|
|
#include "ArmLibPrivate.h"
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmSetAuxCrBit (
|
|
IN UINT32 Bits
|
|
)
|
|
{
|
|
UINT32 val = ArmReadAuxCr();
|
|
val |= Bits;
|
|
ArmWriteAuxCr(val);
|
|
}
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmUnsetAuxCrBit (
|
|
IN UINT32 Bits
|
|
)
|
|
{
|
|
UINT32 val = ArmReadAuxCr();
|
|
val &= ~Bits;
|
|
ArmWriteAuxCr(val);
|
|
}
|
|
|
|
//
|
|
// Helper functions for accessing CPUACTLR
|
|
//
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmSetCpuActlrBit (
|
|
IN UINTN Bits
|
|
)
|
|
{
|
|
UINTN Value;
|
|
Value = ArmReadCpuActlr ();
|
|
Value |= Bits;
|
|
ArmWriteCpuActlr (Value);
|
|
}
|
|
|
|
VOID
|
|
EFIAPI
|
|
ArmUnsetCpuActlrBit (
|
|
IN UINTN Bits
|
|
)
|
|
{
|
|
UINTN Value;
|
|
Value = ArmReadCpuActlr ();
|
|
Value &= ~Bits;
|
|
ArmWriteCpuActlr (Value);
|
|
}
|
|
|
|
UINTN
|
|
EFIAPI
|
|
ArmDataCacheLineLength (
|
|
VOID
|
|
)
|
|
{
|
|
return 4 << ((ArmCacheInfo () >> 16) & 0xf); // CTR_EL0.DminLine
|
|
}
|
|
|
|
UINTN
|
|
EFIAPI
|
|
ArmInstructionCacheLineLength (
|
|
VOID
|
|
)
|
|
{
|
|
return 4 << (ArmCacheInfo () & 0xf); // CTR_EL0.IminLine
|
|
}
|
|
|
|
UINTN
|
|
EFIAPI
|
|
ArmCacheWritebackGranule (
|
|
VOID
|
|
)
|
|
{
|
|
UINTN CWG;
|
|
|
|
CWG = (ArmCacheInfo () >> 24) & 0xf; // CTR_EL0.CWG
|
|
|
|
if (CWG == 0) {
|
|
return SIZE_2KB;
|
|
}
|
|
|
|
return 4 << CWG;
|
|
}
|