[PATCH 1/3] arm64: rust: Enable Rust support for AArch64
Jamie Cunliffe
Jamie.Cunliffe at arm.com
Wed Jan 25 08:37:37 PST 2023
From: Miguel Ojeda <ojeda at kernel.org>
This commit provides the build flags for Rust for AArch64. The core Rust
support already in the kernel does the rest.
The Rust samples have been tested with this commit.
[jcunliffe: Arm specific parts taken from Miguel's upstream tree]
Signed-off-by: Miguel Ojeda <ojeda at kernel.org>
Co-developed-by: Jamie Cunliffe <Jamie.Cunliffe at arm.com>
Signed-off-by: Jamie Cunliffe <Jamie.Cunliffe at arm.com>
---
Documentation/rust/arch-support.rst | 1 +
arch/arm64/Kconfig | 1 +
scripts/generate_rust_target.rs | 13 ++++++++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst
index 6982b63775da..3776059a385a 100644
--- a/Documentation/rust/arch-support.rst
+++ b/Documentation/rust/arch-support.rst
@@ -15,5 +15,6 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file.
============ ================ ==============================================
Architecture Level of support Constraints
============ ================ ==============================================
+``arm64`` Maintained None.
``x86`` Maintained ``x86_64`` only.
============ ================ ==============================================
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 03934808b2ed..fc3800e82802 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -209,6 +209,7 @@ config ARM64
select HAVE_FUNCTION_ARG_ACCESS_API
select MMU_GATHER_RCU_TABLE_FREE
select HAVE_RSEQ
+ select HAVE_RUST
select HAVE_STACKPROTECTOR
select HAVE_SYSCALL_TRACEPOINTS
select HAVE_KPROBES
diff --git a/scripts/generate_rust_target.rs b/scripts/generate_rust_target.rs
index 3c6cbe2b278d..fe0e4ba54492 100644
--- a/scripts/generate_rust_target.rs
+++ b/scripts/generate_rust_target.rs
@@ -148,7 +148,18 @@ fn main() {
let mut ts = TargetSpec::new();
// `llvm-target`s are taken from `scripts/Makefile.clang`.
- if cfg.has("X86_64") {
+ if cfg.has("ARM64") {
+ ts.push("arch", "aarch64");
+ ts.push(
+ "data-layout",
+ "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
+ );
+ ts.push("disable-redzone", true);
+ ts.push("features", "+strict-align,+neon,+fp-armv8");
+ ts.push("llvm-target", "aarch64-linux-gnu");
+ ts.push("max-atomic-width", 128);
+ ts.push("target-pointer-width", "64");
+ } else if cfg.has("X86_64") {
ts.push("arch", "x86_64");
ts.push(
"data-layout",
--
2.30.2
More information about the linux-arm-kernel
mailing list