Skip to content

Commit 9a9c582

Browse files
author
Nicolas Pitre
committed
arch: arm64: Add ARMv9-A architecture and Cortex-A510 CPU support
Add ARMv9-A architecture support with Cortex-A510 CPU as the default processor for generic ARMv9-A targets. Signed-off-by: Nicolas Pitre <[email protected]>
1 parent fc52a9c commit 9a9c582

File tree

9 files changed

+64
-0
lines changed

9 files changed

+64
-0
lines changed

arch/arm64/core/Kconfig

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,16 @@ config CPU_CORTEX_A78
7979
help
8080
This option signifies the use of a Cortex-A78 CPU
8181

82+
config CPU_CORTEX_A510
83+
bool
84+
select CPU_CORTEX_A
85+
select ARMV9_A
86+
help
87+
This option signifies the use of a Cortex-A510 CPU, which is ARM's
88+
efficiency core implementing the ARMv9-A architecture. It provides
89+
power-efficient processing optimized for embedded applications with
90+
ARMv9-A features.
91+
8292
config CPU_CORTEX_R82
8393
bool
8494
select CPU_AARCH64_CORTEX_R
@@ -223,6 +233,19 @@ config ARMV8_A
223233
so that it can support some features included in the AArch64 state.
224234
It supports the T32 and A32 instruction sets.
225235

236+
config ARMV9_A
237+
bool
238+
select ATOMIC_OPERATIONS_BUILTIN
239+
select CPU_HAS_MMU
240+
select ARCH_HAS_USERSPACE if ARM_MMU
241+
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT if ARM_MMU
242+
help
243+
This option signifies the use of an ARMv9-A processor
244+
implementation.
245+
ARMv9-A builds on ARMv8-A and introduces additional security,
246+
performance, and machine learning capabilities while maintaining
247+
backward compatibility with ARMv8-A software.
248+
226249
rsource "xen/Kconfig"
227250

228251
endif # CPU_CORTEX_A

cmake/compiler/iar/iccarm-cpu.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ elseif("${ARCH}" STREQUAL "arm64")
9595
set(ICCARM_CPU cortex-a76)
9696
elseif(CONFIG_CPU_CORTEX_A72)
9797
set(ICCARM_CPU Cortex-A72)
98+
elseif(CONFIG_CPU_CORTEX_A510)
99+
set(ICCARM_CPU Cortex-A510)
98100
elseif(CONFIG_CPU_CORTEX_R82)
99101
set(ICCARM_CPU Cortex-R82)
100102
endif()

cmake/gcc-m-cpu.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ elseif("${ARCH}" STREQUAL "arm64")
115115
set(GCC_M_CPU cortex-a72)
116116
elseif(CONFIG_CPU_CORTEX_A78)
117117
set(GCC_M_CPU cortex-a78)
118+
elseif(CONFIG_CPU_CORTEX_A510)
119+
set(GCC_M_CPU cortex-a510)
118120
elseif(CONFIG_CPU_CORTEX_R82)
119121
set(GCC_M_CPU cortex-r82)
120122
endif()

dts/arm64/armv9-a.dtsi

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/*
2+
* Copyright (c) 2025 BayLibre SAS
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include "skeleton.dtsi"
8+
9+
/ {
10+
soc {
11+
#address-cells = <1>;
12+
#size-cells = <1>;
13+
compatible = "simple-bus";
14+
ranges;
15+
};
16+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright (c) 2025 BayLibre SAS
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
description: ARM Cortex-A510 CPU
5+
6+
compatible: "arm,cortex-a510"
7+
8+
include: cpu.yaml

soc/arm/fvp_aem/Kconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,8 @@ config SOC_FVP_V8A
1010
bool
1111
select ARM64
1212
select CPU_CORTEX_A53
13+
14+
config SOC_FVP_V9A
15+
bool
16+
select ARM64
17+
select CPU_CORTEX_A510

soc/arm/fvp_aem/Kconfig.soc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@ config SOC_FVP_V8A
99
bool
1010
select SOC_SERIES_FVP_AEM
1111

12+
config SOC_FVP_V9A
13+
bool
14+
select SOC_SERIES_FVP_AEM
15+
1216
config SOC
1317
default "v8a" if SOC_FVP_V8A
18+
default "v9a" if SOC_FVP_V9A
1419

1520
config SOC_SERIES
1621
default "fvp_aem" if SOC_SERIES_FVP_AEM

soc/arm/soc.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ family:
3232
- name: fvp_aem
3333
socs:
3434
- name: v8a
35+
- name: v9a
3536
- name: fvp_aemv8r
3637
socs:
3738
- name: fvp_aemv8r_aarch64

subsys/mgmt/mcumgr/grp/os_mgmt/include/os_mgmt_processor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ extern "C" {
133133
#define PROCESSOR_NAME "cortex-a76"
134134
#elif defined(CONFIG_CPU_CORTEX_A78)
135135
#define PROCESSOR_NAME "cortex-a78"
136+
#elif defined(CONFIG_CPU_CORTEX_A510)
137+
#define PROCESSOR_NAME "cortex-a510"
136138
#elif defined(CONFIG_CPU_CORTEX_R82)
137139
#define PROCESSOR_NAME "armv8.4-a+nolse"
138140
#endif

0 commit comments

Comments
 (0)