/** @file Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
Copyright (c) 2011 - 2013, ARM Ltd. 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. **/ #ifndef __AARCH64_H__ #define __AARCH64_H__ #include #include // ARM Interrupt ID in Exception Table #define ARM_ARCH_EXCEPTION_IRQ EXCEPT_AARCH64_IRQ // CPACR - Coprocessor Access Control Register definitions #define CPACR_TTA_EN (1UL << 28) #define CPACR_FPEN_EL1 (1UL << 20) #define CPACR_FPEN_FULL (3UL << 20) #define CPACR_CP_FULL_ACCESS 0x300000 // Coprocessor Trap Register (CPTR) #define AARCH64_CPTR_TFP (1 << 10) // ID_AA64PFR0 - AArch64 Processor Feature Register 0 definitions #define AARCH64_PFR0_FP (0xF << 16) // SCR - Secure Configuration Register definitions #define SCR_NS (1 << 0) #define SCR_IRQ (1 << 1) #define SCR_FIQ (1 << 2) #define SCR_EA (1 << 3) #define SCR_FW (1 << 4) #define SCR_AW (1 << 5) // MIDR - Main ID Register definitions #define ARM_CPU_TYPE_MASK 0xFFF #define ARM_CPU_TYPE_AEMv8 0xD0F #define ARM_CPU_TYPE_A15 0xC0F #define ARM_CPU_TYPE_A9 0xC09 #define ARM_CPU_TYPE_A5 0xC05 // Hypervisor Configuration Register #define ARM_HCR_FMO BIT3 #define ARM_HCR_IMO BIT4 #define ARM_HCR_AMO BIT5 #define ARM_HCR_TGE BIT27 // AArch64 Exception Level #define AARCH64_EL3 0xC #define AARCH64_EL2 0x8 #define AARCH64_EL1 0x4 #define ARM_VECTOR_TABLE_ALIGNMENT ((1 << 11)-1) VOID EFIAPI ArmEnableSWPInstruction ( VOID ); UINTN EFIAPI ArmReadCbar ( VOID ); UINTN EFIAPI ArmReadTpidrurw ( VOID ); VOID EFIAPI ArmWriteTpidrurw ( UINTN Value ); UINTN EFIAPI ArmGetTCR ( VOID ); VOID EFIAPI ArmSetTCR ( UINTN Value ); UINTN EFIAPI ArmGetMAIR ( VOID ); VOID EFIAPI ArmSetMAIR ( UINTN Value ); VOID EFIAPI ArmDisableAlignmentCheck ( VOID ); VOID EFIAPI ArmEnableAlignmentCheck ( VOID ); VOID EFIAPI ArmDisableAllExceptions ( VOID ); VOID ArmWriteHcr ( IN UINTN Hcr ); UINTN ArmReadCurrentEL ( VOID ); UINT64 PageAttributeToGcdAttribute ( IN UINT64 PageAttributes ); UINT64 GcdAttributeToPageAttribute ( IN UINT64 GcdAttributes ); UINTN ArmWriteCptr ( IN UINT64 Cptr ); #endif // __AARCH64_H__