Ard Biesheuvel b58ec859c7 ArmPkg/ArmLib: clean up library includes
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>
2020-03-05 21:08:30 +00:00

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;
}