1 /* 2 * Copyright (c) 2020 Apple Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28 29 #ifndef _PEXPERT_ARM64_H15_H 30 #define _PEXPERT_ARM64_H15_H 31 32 #define APPLEEVEREST 33 #define NO_MONITOR 1 /* No EL3 for this CPU -- ever */ 34 #define HAS_CTRR 1 /* Has CTRR registers */ 35 #define HAS_NEX_PG 1 /* Supports p-Core NEX powergating during Neon inactivity */ 36 #define HAS_BP_RET 1 /* Supports branch predictor state retention across ACC sleep */ 37 #define HAS_CONTINUOUS_HWCLOCK 1 /* Has a hardware clock that ticks during sleep */ 38 #define HAS_IPI 1 /* Has IPI registers */ 39 #define HAS_CLUSTER 1 /* Has eCores and pCores in separate clusters */ 40 #define HAS_RETENTION_STATE 1 /* Supports architectural state retention */ 41 42 43 #define HAS_UCNORMAL_MEM 1 /* Supports completely un-cacheable normal memory type */ 44 #define HAS_FAST_CNTVCT 1 45 #define HAS_USAT_BIT 1 /* ACTLR has USAT bit (H12+) */ 46 #define HAS_ARM_FEAT_SSBS2 1 /* Supports Speculative Store Bypass Safe with MSR controls */ 47 #define HAS_E0PD 1 /* Supports E0PD0 and E0PD1 in TCR for Meltdown mitigation (ARMv8.5)*/ 48 #define HAS_APPLE_GENERIC_TIMER 1 /* Supports 24 MHz Apple timer */ 49 50 51 #define HAS_ACFG 1 /* Supports ACFG_EL1 system register */ 52 #define HAS_AMDSCR 1 /* Supports AMDSCR_EL1 system register */ 53 #define HAS_HCR_TSC_RW 1 /* HCR_EL2.TSC is writable */ 54 #define HAS_EL1_SHAREABILITY_BOUNDARY 1 /* Supports shareability boundary on TLBI/SDSB instructions executed at EL1 */ 55 56 57 #define HAS_CPU_DPE_COUNTER 1 /* Has a hardware counter for digital power estimation */ 58 #define HAS_BTI 1 /* Supports Branch Target Identification (ARMv8.5) */ 59 60 #define HAS_GUARDED_IO_FILTER 1 /* Has a guarded runtime dedicated to the fine-grained IO access filter */ 61 #define HAS_SPECRES 1 /* Supports SPECRES. */ 62 #define HAS_ERRATA_123855614 1 63 64 #define CPU_HAS_APPLE_PAC 1 65 #define HAS_UNCORE_CTRS 1 66 #define UNCORE_VERSION 2 67 #define UNCORE_PER_CLUSTER 1 68 #define UNCORE_NCTRS 16 69 #define CORE_NCTRS 10 70 #define HAS_CPMU_PC_CAPTURE 1 71 72 /* Performance Monitor */ 73 #define CPMU_PMC_COUNT 10 74 #define CPMU_INSTRUCTION_MATCHING 1 75 #define CPMU_MEMORY_FILTERING 1 76 #define CPMU_64BIT_PMCS 1 77 #define CPMU_16BIT_EVENTS 1 78 #define HAS_UPMU 1 79 #define UPMU_VERSION 2 80 #define UPMU_PMC_COUNT 16 81 #define UPMU_PER_CLUSTER 1 82 #define UPMU_AF_LATENCY 1 83 #define UPMU_META_EVENTS 1 84 #define UPMU_64BIT_PMCS 1 85 86 #define __ARM_AMP__ 1 87 #define __ARM_16K_PG__ 1 88 #define __ARM_GLOBAL_SLEEP_BIT__ 1 89 #define __ARM_PAN_AVAILABLE__ 1 90 #define __ARM_SB_AVAILABLE__ 1 91 92 93 94 95 #define __HWP_CFG_BIT_VER__ 2 96 97 /* Optional CPU features -- an SoC may #undef these */ 98 99 #define __APPLE_NV__ 1 100 #define __APPLE_NV1__ 1 101 #define ARM_PARAMETERIZED_PMAP 1 102 #define __ARM_MIXED_PAGE_SIZE__ 1 103 104 105 106 #define __ARM_RANGE_TLBI__ 1 107 108 #include <pexpert/arm64/vhe_disable.h> 109 110 #include <pexpert/arm64/apple_arm64_common.h> 111 112 #endif /* !_PEXPERT_ARM64_H15_H */ 113