[PATCH] arch: um: rust: Add i386 support for Rust

Nathan Chancellor nathan at kernel.org
Tue Jun 4 23:22:34 PDT 2024


Hi David,

Just a fly by comment on style, I don't have much to say content :)

On Wed, Jun 05, 2024 at 06:40:50AM +0800, David Gow wrote:
> At present, Rust in the kernel only supports 64-bit x86, so UML has
> followed suit. However, it's significantly easier to support 32-bit i386
> on UML than on bare metal, as UML does not use the -mregparm option
> (which alters the ABI), which is not yet supported by rustc[1].
> 
> Add support for CONFIG_RUST on um/i386, by adding a new target config to
> generate_rust_target, and replacing various checks on CONFIG_X86_64 to
> also probably like  support CONFIG_X86_32.
> 
> We still use generate_rust_target, rather than a built-in rustc target,
> in oPrder to match x86_64, provide a future place for -mregparm, and more
> easily disable floating point instructions.
> 
> With these changes, the KUnit tests pass with:
> kunit.py run --make_options LLVM=1 --kconfig_add CONFIG_RUST=y
> --kconfig_add CONFIG_64BIT=n --kconfig_add CONFIG_FORTIFY_SOURCE=n
> 
> An earlier version of these changes was proposed on the Rust-for-Linux
> github[2].
> 
> [1]: https://github.com/rust-lang/rust/issues/116972
> [2]: https://github.com/Rust-for-Linux/linux/pull/966
> 
> Signed-off-by: David Gow <davidgow at google.com>
...
> -ifdef CONFIG_X86_64
> +ifneq ($(or $(CONFIG_X86_64),$(CONFIG_X86_32)),)

These configurations are mutually exclusive, so would it look more
readable to have it be:


ifeq ($(CONFIG_X86_32)$(CONFIG_X86_64),y)

?

Cheers.
Nathan



More information about the linux-um mailing list