16BOOLEAN mIsFlushingGCD;
55 case EfiCpuFlushTypeWriteBack:
58 case EfiCpuFlushTypeInvalidate:
61 case EfiCpuFlushTypeWriteBackInvalidate:
65 return EFI_INVALID_PARAMETER;
86 ArmEnableInterrupts ();
106 ArmDisableInterrupts ();
132 return EFI_INVALID_PARAMETER;
135 *State = ArmGetInterruptState ();
162 return EFI_UNSUPPORTED;
180 IN UINT32 TimerIndex,
181 OUT UINT64 *TimerValue,
182 OUT UINT64 *TimerPeriod OPTIONAL
185 return EFI_UNSUPPORTED;
229 CpuArchProtocol->DmaBufferAlignment = ArmCacheWritebackGranule ();
247 UINTN DescriptorSize;
248 UINT32 DescriptorVersion;
255 if ((
PcdGet64 (PcdDxeNxMemoryProtectionPolicy) & TestBit) == 0) {
262 Status =
gBS->GetMemoryMap (
269 ASSERT (Status == EFI_BUFFER_TOO_SMALL);
272 ASSERT (MemoryMap !=
NULL);
273 Status =
gBS->GetMemoryMap (
280 if (EFI_ERROR (Status)) {
283 }
while (Status == EFI_BUFFER_TOO_SMALL);
287 MemoryMapEntry = MemoryMap;
289 while ((
UINTN)MemoryMapEntry < (
UINTN)MemoryMapEnd) {
312 InitializeExceptions (&mCpu);
314 InitializeDma (&mCpu);
330 Status =
gBS->InstallMultipleProtocolInterfaces (
332 &gEfiCpuArchProtocolGuid,
334 &gEfiMemoryAttributeProtocolGuid,
344 mIsFlushingGCD =
TRUE;
345 SyncCacheConfig (&mCpu);
346 mIsFlushingGCD =
FALSE;
351 Status =
gBS->CreateEventEx (
VOID *EFIAPI WriteBackDataCacheRange(IN VOID *Address, IN UINTN Length)
VOID *EFIAPI InvalidateDataCacheRange(IN VOID *Address, IN UINTN Length)
VOID *EFIAPI WriteBackInvalidateDataCacheRange(IN VOID *Address, IN UINTN Length)
EFI_STATUS ArmSetMemoryAttributes(IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes, IN UINT64 AttributeMask)
EFI_STATUS EFIAPI CpuGetInterruptState(IN EFI_CPU_ARCH_PROTOCOL *This, OUT BOOLEAN *State)
VOID EFIAPI IdleLoopEventCallback(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI CpuRegisterInterruptHandler(IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_EXCEPTION_TYPE InterruptType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler)
EFI_STATUS EFIAPI CpuGetTimerValue(IN EFI_CPU_ARCH_PROTOCOL *This, IN UINT32 TimerIndex, OUT UINT64 *TimerValue, OUT UINT64 *TimerPeriod OPTIONAL)
STATIC VOID RemapUnusedMemoryNx(VOID)
EFI_STATUS EFIAPI CpuDisableInterrupt(IN EFI_CPU_ARCH_PROTOCOL *This)
EFI_STATUS EFIAPI CpuInit(IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_CPU_INIT_TYPE InitType)
EFI_STATUS EFIAPI CpuFlushCpuDataCache(IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS Start, IN UINT64 Length, IN EFI_CPU_FLUSH_TYPE FlushType)
EFI_STATUS EFIAPI CpuEnableInterrupt(IN EFI_CPU_ARCH_PROTOCOL *This)
EFI_STATUS EFIAPI CpuSetMemoryAttributes(IN EFI_CPU_ARCH_PROTOCOL *This, IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length, IN UINT64 Attributes)
EFI_STATUS RegisterInterruptHandler(IN EFI_EXCEPTION_TYPE InterruptType, IN EFI_CPU_INTERRUPT_HANDLER InterruptHandler)
UINT64 EFIAPI LShiftU64(IN UINT64 Operand, IN UINTN Count)
VOID(EFIAPI * EFI_CPU_INTERRUPT_HANDLER)(IN CONST EFI_EXCEPTION_TYPE InterruptType, IN CONST EFI_SYSTEM_CONTEXT SystemContext)
VOID EFIAPI CpuSleep(VOID)
#define ASSERT_EFI_ERROR(StatusParameter)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define PcdGet64(TokenName)
#define FeaturePcdGet(TokenName)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
UINT64 EFI_PHYSICAL_ADDRESS
#define EFI_PAGES_TO_SIZE(Pages)
#define NEXT_MEMORY_DESCRIPTOR(MemoryDescriptor, Size)
EFI_PHYSICAL_ADDRESS PhysicalStart