Commit 90868ff9 authored by WANG Rui's avatar WANG Rui Committed by Huacai Chen
Browse files

LoongArch: Enable initial Rust support



Enable initial Rust support for LoongArch.

Tested-by: default avatarMiguel Ojeda <ojeda@kernel.org>
Signed-off-by: default avatarWANG Rui <wangrui@loongson.cn>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent f58b0aba
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -12,10 +12,11 @@ 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
============  ================  ==============================================
=============  ================  ==============================================
``loongarch``  Maintained        -
``um``         Maintained        ``x86_64`` only.
``x86``        Maintained        ``x86_64`` only.
============  ================  ==============================================
=============  ================  ==============================================
+1 −0
Original line number Diff line number Diff line
@@ -140,6 +140,7 @@ config LOONGARCH
	select HAVE_REGS_AND_STACK_ACCESS_API
	select HAVE_RETHOOK
	select HAVE_RSEQ
	select HAVE_RUST
	select HAVE_SAMPLE_FTRACE_DIRECT
	select HAVE_SAMPLE_FTRACE_DIRECT_MULTI
	select HAVE_SETUP_PER_CPU_AREA if NUMA
+3 −0
Original line number Diff line number Diff line
@@ -81,8 +81,11 @@ KBUILD_AFLAGS_MODULE += -Wa,-mla-global-with-abs
KBUILD_CFLAGS_MODULE		+= -fplt -Wa,-mla-global-with-abs,-mla-local-with-abs
endif

KBUILD_RUSTFLAGS_MODULE		+= -Crelocation-model=pic

ifeq ($(CONFIG_RELOCATABLE),y)
KBUILD_CFLAGS_KERNEL		+= -fPIE
KBUILD_RUSTFLAGS_KERNEL		+= -Crelocation-model=pie
LDFLAGS_vmlinux			+= -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs)
endif

+7 −0
Original line number Diff line number Diff line
@@ -161,6 +161,13 @@ fn main() {
        ts.push("features", features);
        ts.push("llvm-target", "x86_64-linux-gnu");
        ts.push("target-pointer-width", "64");
    } else if cfg.has("LOONGARCH") {
        ts.push("arch", "loongarch64");
        ts.push("data-layout", "e-m:e-p:64:64-i64:64-i128:128-n64-S128");
        ts.push("features", "-f,-d");
        ts.push("llvm-target", "loongarch64-linux-gnusf");
        ts.push("llvm-abiname", "lp64s");
        ts.push("target-pointer-width", "64");
    } else {
        panic!("Unsupported architecture");
    }