@@ -77,6 +77,15 @@ config BR2_i386
Intel i386 architecture compatible microprocessor
http://en.wikipedia.org/wiki/I386
+config BR2_loongarch64
+ bool "LoongArch64"
+ select BR2_USE_MMU
+ select BR2_ARCH_IS_64
+ help
+ LoongArch64 is a is a 64-bit architecture developed by Loongson.
+ http://www.loongson.cn/
+ https://en.wikipedia.org/wiki/Loongson
+
config BR2_m68k
bool "m68k"
# MMU support is set by the subarchitecture file, arch/Config.in.m68k
@@ -380,6 +389,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be
source "arch/Config.in.arm"
endif
+if BR2_loongarch64
+source "arch/Config.in.loongarch"
+endif
+
if BR2_m68k
source "arch/Config.in.m68k"
endif
new file mode 100644
@@ -0,0 +1,127 @@
+# LoongArch CPU
+
+choice
+ prompt "Target Architecture Variant"
+ default BR2_loongarch64_generic
+
+config BR2_loongarch64_generic
+ bool "Generic LoongArch 64-bit"
+ depends on BR2_ARCH_IS_64
+ select BR2_ARCH_NEEDS_GCC_AT_LEAST_12
+ help
+ Generic LoongArch 64-bit processor.
+
+config BR2_loongarch64_v1_0
+ bool "LoongArch64 ISA version 1.0"
+ depends on BR2_ARCH_IS_64
+ select BR2_ARCH_NEEDS_GCC_AT_LEAST_13
+ help
+ LoongArch64 ISA version 1.0 processor.
+
+config BR2_loongarch64_v1_1
+ bool "LoongArch64 ISA version 1.1"
+ depends on BR2_ARCH_IS_64
+ select BR2_ARCH_NEEDS_GCC_AT_LEAST_13
+ help
+ LoongArch64 ISA version 1.1 processor.
+endchoice
+
+choice
+ prompt "FPU Type"
+ default BR2_LOONGARCH_FPU_64
+
+config BR2_LOONGARCH_FPU_64
+ bool "64"
+ help
+ Allow the use of hardware floating-point instructions for 32-bit
+ and 64-bit operations.
+
+config BR2_LOONGARCH_FPU_32
+ bool "32"
+ help
+ Allow the use of hardware floating-point instructions for 32-bit
+ operations only.
+
+config BR2_LOONGARCH_FPU_NONE
+ bool "none"
+ help
+ Prevent the use of hardware floating-point instructions.
+endchoice
+
+choice
+ prompt "SIMD Type"
+ default BR2_LOONGARCH_SIMD_NONE
+
+config BR2_LOONGARCH_SIMD_NONE
+ bool "none"
+ help
+ Prevent the use of hardware SIMD instructions.
+
+config BR2_LOONGARCH_SIMD_LSX
+ bool "LSX"
+ help
+ Enable generating instructions from the 128-bit LoongArch SIMD
+ Extension (LSX).
+
+config BR2_LOONGARCH_SIMD_LASX
+ bool "LASX"
+ help
+ Enable generating instructions from the 256-bit LoongArch Advanced
+ SIMD Extension (LASX) and the 128-bit LoongArch SIMD Extension (LSX).
+endchoice
+
+choice
+ prompt "Target ABI"
+ default BR2_LOONGARCH_ABI_LP64D if BR2_ARCH_IS_64 && BR2_LOONGARCH_FPU_64
+ default BR2_LOONGARCH_ABI_LP64F if BR2_ARCH_IS_64 && BR2_LOONGARCH_FPU_32
+ default BR2_LOONGARCH_ABI_LP64S if BR2_ARCH_IS_64 && BR2_LOONGARCH_SIMD_NONE
+
+config BR2_LOONGARCH_ABI_LP64D
+ bool "lp64d"
+ depends on BR2_ARCH_IS_64
+ depends on BR2_LOONGARCH_FPU_64
+
+config BR2_LOONGARCH_ABI_LP64F
+ bool "lp64f"
+ depends on BR2_ARCH_IS_64
+ depends on BR2_LOONGARCH_FPU_64 || BR2_LOONGARCH_FPU_32
+
+config BR2_LOONGARCH_ABI_LP64S
+ bool "lp64d"
+ depends on BR2_ARCH_IS_64
+endchoice
+
+config BR2_ARCH
+ default "loongarch64" if BR2_ARCH_IS_64
+
+config BR2_NORMALIZED_ARCH
+ default "loongarch"
+
+config BR2_ENDIAN
+ default "LITTLE"
+
+config BR2_GCC_TARGET_ARCH
+ default "loongarch64" if BR2_loongarch64_generic
+ default "la64v1.0" if BR2_loongarch64_v1_0
+ default "la64v1.1" if BR2_loongarch64_v1_1
+
+config BR2_GCC_TARGET_FPU
+ default "64" if BR2_LOONGARCH_FPU_64
+ default "32" if BR2_LOONGARCH_FPU_32
+ default "none" if BR2_LOONGARCH_FPU_NONE
+
+config BR2_GCC_TARGET_SIMD
+ default "lasx" if BR2_LOONGARCH_SIMD_LASX
+ default "lsx" if BR2_LOONGARCH_SIMD_LSX
+ default "none" if BR2_LOONGARCH_FPU_NONE
+
+config BR2_GCC_TARGET_ABI
+ default "lp64d" if BR2_LOONGARCH_ABI_LP64D
+ default "lp64f" if BR2_LOONGARCH_ABI_LP64F
+ default "lp64s" if BR2_LOONGARCH_ABI_LP64S
+
+config BR2_READELF_ARCH_NAME
+ default "LoongArch"
+
+# vim: ft=kconfig
+# -*- mode:kconfig; -*-
Introduce LoongArch64 at architecture level. Config.in.loongarch is prepared for possible loongarch32 enablement in future. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- arch/Config.in | 13 +++++ arch/Config.in.loongarch | 127 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+)