1# ARM Cortex-A and Cortex-R platform configuration options 2 3# Copyright (c) 2018 Marvell 4# Copyright (c) 2018 Lexmark International, Inc. 5# Copyright (c) 2021 Weidmueller Interface GmbH & Co. KG 6# 7# SPDX-License-Identifier: Apache-2.0 8 9# NOTE: We have the specific core implementations first and outside of the 10# if CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R block so that SoCs can 11# select which core they are using without having to select all the options 12# related to that core. Everything else is captured inside the if 13# CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R blocks so they are not 14# exposed if one selects a different ARM Cortex Family (Cortex-M). 15 16config CPU_CORTEX_A9 17 bool 18 select CPU_AARCH32_CORTEX_A 19 select ARMV7_A 20 help 21 This option signifies the use of a Cortex-A9 CPU. 22 23if CPU_AARCH32_CORTEX_A 24 25config ARMV7_A 26 bool 27 select ATOMIC_OPERATIONS_BUILTIN 28 select ISA_ARM 29 30config ARMV7_EXCEPTION_STACK_SIZE 31 int "Undefined Instruction and Abort stack size (in bytes)" 32 default 256 33 help 34 This option specifies the size of the stack used by the undefined 35 instruction and data abort exception handlers. 36 37config ARMV7_FIQ_STACK_SIZE 38 int "FIQ stack size (in bytes)" 39 default 256 40 help 41 This option specifies the size of the stack used by the FIQ handler. 42 43config ARMV7_SVC_STACK_SIZE 44 int "SVC stack size (in bytes)" 45 default 512 46 help 47 This option specifies the size of the stack used by the SVC handler. 48 49config ARMV7_SYS_STACK_SIZE 50 int "SYS stack size (in bytes)" 51 default 1024 52 help 53 This option specifies the size of the stack used by the system mode. 54 55config RUNTIME_NMI 56 default y 57 58config GEN_ISR_TABLES 59 default y 60 61config GEN_IRQ_VECTOR_TABLE 62 default n 63 64config DCACHE_LINE_SIZE 65 default 32 66 67config ICACHE_LINE_SIZE 68 default 32 69 70endif # CPU_AARCH32_CORTEX_A 71 72config CPU_CORTEX_R4 73 bool 74 select CPU_AARCH32_CORTEX_R 75 select ARMV7_R 76 select ARMV7_R_FP if CPU_HAS_FPU 77 help 78 This option signifies the use of a Cortex-R4 CPU 79 80config CPU_CORTEX_R5 81 bool 82 select CPU_AARCH32_CORTEX_R 83 select ARMV7_R 84 select ARMV7_R_FP if CPU_HAS_FPU 85 help 86 This option signifies the use of a Cortex-R5 CPU 87 88config CPU_CORTEX_R7 89 bool 90 select CPU_AARCH32_CORTEX_R 91 select ARMV7_R 92 select ARMV7_R_FP if CPU_HAS_FPU 93 help 94 This option signifies the use of a Cortex-R7 CPU 95 96config CPU_CORTEX_R52 97 bool 98 select CPU_AARCH32_CORTEX_R 99 select AARCH32_ARMV8_R 100 select CPU_HAS_ICACHE 101 select CPU_HAS_DCACHE 102 select VFP_SP_D16 103 help 104 This option signifies the use of a Cortex-R52 CPU 105 106if CPU_AARCH32_CORTEX_R 107 108config ARMV7_R 109 bool 110 select ATOMIC_OPERATIONS_BUILTIN 111 select ISA_ARM 112 select ISA_THUMB2 113 help 114 This option signifies the use of an ARMv7-R processor 115 implementation. 116 117 From https://developer.arm.com/products/architecture/cpu-architecture/r-profile: 118 The Armv7-R architecture implements a traditional Arm architecture with 119 multiple modes and supports a Protected Memory System Architecture 120 (PMSA) based on a Memory Protection Unit (MPU). It supports the Arm (32) 121 and Thumb (T32) instruction sets. 122 123config ARMV7_R_FP 124 bool 125 depends on ARMV7_R 126 help 127 This option signifies the use of an ARMv7-R processor 128 implementation supporting the Floating-Point Extension. 129 130config AARCH32_ARMV8_R 131 bool 132 select ATOMIC_OPERATIONS_BUILTIN 133 help 134 This option signifies the use of an ARMv8-R AArch32 processor 135 implementation. 136 137 From https://developer.arm.com/products/architecture/cpu-architecture/r-profile: 138 The Armv8-R architecture targets at the Real-time profile. It introduces 139 virtualization at the highest security level while retaining the 140 Protected Memory System Architecture (PMSA) based on a Memory Protection 141 Unit (MPU). It supports the A32 and T32 instruction sets. 142 143config ARMV7_EXCEPTION_STACK_SIZE 144 int "Undefined Instruction and Abort stack size (in bytes)" 145 default 256 146 help 147 This option specifies the size of the stack used by the undefined 148 instruction and data abort exception handlers. 149 150config ARMV7_FIQ_STACK_SIZE 151 int "FIQ stack size (in bytes)" 152 default 256 153 help 154 This option specifies the size of the stack used by the FIQ handler. 155 156config ARMV7_SVC_STACK_SIZE 157 int "SVC stack size (in bytes)" 158 default 512 159 help 160 This option specifies the size of the stack used by the SVC handler. 161 162config ARMV7_SYS_STACK_SIZE 163 int "SYS stack size (in bytes)" 164 default 1024 165 help 166 This option specifies the size of the stack used by the system mode. 167 168config RUNTIME_NMI 169 default y 170 171config GEN_ISR_TABLES 172 default y 173 174config GEN_IRQ_VECTOR_TABLE 175 default n 176 177config DISABLE_TCM_ECC 178 bool "Disable ECC on TCM" 179 help 180 This option disables ECC checks on Tightly Coupled Memory. 181 182config DCACHE_LINE_SIZE 183 default 64 if CPU_CORTEX_R52 184 default 32 185 186config ICACHE_LINE_SIZE 187 default 64 if CPU_CORTEX_R52 188 default 32 189 190endif # CPU_AARCH32_CORTEX_R 191