mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-23 06:17:31 -04:00
Enable building Rust code on s390 by wiring the architecture into the kernel Rust infrastructure. Add s390 to the Rust arch support documentation, provide the s390 Rust target and required compiler flags, and set the bindgen target for arch/s390. Adjust the Rust target generation and minimum rustc version gating so the s390 setup is handled explicitly. The Rust toolchain uses the "s390x" triple naming for the 64 bit target. Rust support is currently incompatible with CONFIG_EXPOLINE, which relies on compiler support for the -mindirect-branch= and -mfunction_return= options. Therefore, select HAVE_RUST only when EXPOLINE is disabled. Acked-by: Miguel Ojeda <ojeda@kernel.org> Acked-by: Gary Guo <gary@garyguo.net> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Jan Polensky <japo@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
27 lines
1.1 KiB
ReStructuredText
27 lines
1.1 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
Arch Support
|
|
============
|
|
|
|
Currently, the Rust compiler (``rustc``) uses LLVM for code generation,
|
|
which limits the supported architectures that can be targeted. In addition,
|
|
support for building the kernel with LLVM/Clang varies (please see
|
|
Documentation/kbuild/llvm.rst). This support is needed for ``bindgen``
|
|
which uses ``libclang``.
|
|
|
|
Below is a general summary of architectures that currently work. Level of
|
|
support corresponds to ``S`` values in the ``MAINTAINERS`` file.
|
|
|
|
============= ================ ==============================================
|
|
Architecture Level of support Constraints
|
|
============= ================ ==============================================
|
|
``arm`` Maintained ARMv7 Little Endian only.
|
|
``arm64`` Maintained Little Endian only.
|
|
``loongarch`` Maintained \-
|
|
``riscv`` Maintained ``riscv64`` and LLVM/Clang only.
|
|
``s390`` Maintained ``CONFIG_EXPOLINE`` must be disabled.
|
|
``um`` Maintained \-
|
|
``x86`` Maintained ``x86_64`` only.
|
|
============= ================ ==============================================
|
|
|