Message ID | ZkMEATm9Efp16zRg@waldemar-brodkorb.de |
---|---|
State | Superseded |
Headers | show |
Series | [1/3] arch: add support for loongarch64 | expand |
On Tue, 14 May 2024 08:26:09 +0200 Waldemar Brodkorb <wbx@openadk.org> wrote: > Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> > --- > arch/Config.in | 12 ++++++++++++ > arch/Config.in.loongarch64 | 14 ++++++++++++++ > package/glibc/Config.in | 1 + > package/musl/Config.in | 1 + > 4 files changed, 28 insertions(+) > create mode 100644 arch/Config.in.loongarch64 This needs an entry in the DEVELOPERS file. Is this architecture supported in all versions of binutils/gcc/gdb we support? > diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 > new file mode 100644 > index 0000000000..2b5bac095d > --- /dev/null > +++ b/arch/Config.in.loongarch64 > @@ -0,0 +1,14 @@ > +config BR2_ARCH > + default "loongarch64" > + > +config BR2_NORMALIZED_ARCH > + default "loongarch" > + > +config BR2_ENDIAN > + default "LITTLE" > + > +config BR2_READELF_ARCH_NAME > + default "LoongArch" > + Based on the gcc documentation, I see two -march values: ‘loongarch64’ A generic CPU with 64-bit extensions. ‘la464’ LoongArch LA464 CPU with LBT, LSX, LASX, LVZ. And also 3 ABIs: ‘lp64d’ Uses 64-bit general purpose registers and 32/64-bit floating-point registers for parameter passing. Data model is LP64, where ‘int’ is 32 bits, while ‘long int’ and pointers are 64 bits. ‘lp64f’ Uses 64-bit general purpose registers and 32-bit floating-point registers for parameter passing. Data model is LP64, where ‘int’ is 32 bits, while ‘long int’ and pointers are 64 bits. ‘lp64s’ Uses 64-bit general purpose registers and no floating-point registers for parameter passing. Data model is LP64, where ‘int’ is 32 bits, while ‘long int’ and pointers are 64 bits. Should we do something about this? Thomas
diff --git a/arch/Config.in b/arch/Config.in index f39c33ef7f..070a4aca3a 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -77,6 +77,14 @@ config BR2_i386 Intel i386 architecture compatible microprocessor http://en.wikipedia.org/wiki/I386 +config BR2_loongarch64 + bool "loongarch64" + select BR2_ARCH_IS_64 + select BR2_USE_MMU + help + Loongarch is a RISC microprocessor from Loongarch Technologies. + https://en.wikipedia.org/wiki/Loongson + config BR2_m68k bool "m68k" # MMU support is set by the subarchitecture file, arch/Config.in.m68k @@ -374,6 +382,10 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif +if BR2_loongarch64 +source "arch/Config.in.loongarch64" +endif + if BR2_m68k source "arch/Config.in.m68k" endif diff --git a/arch/Config.in.loongarch64 b/arch/Config.in.loongarch64 new file mode 100644 index 0000000000..2b5bac095d --- /dev/null +++ b/arch/Config.in.loongarch64 @@ -0,0 +1,14 @@ +config BR2_ARCH + default "loongarch64" + +config BR2_NORMALIZED_ARCH + default "loongarch" + +config BR2_ENDIAN + default "LITTLE" + +config BR2_READELF_ARCH_NAME + default "LoongArch" + +# vim: ft=kconfig +# -*- mode:kconfig; -*- diff --git a/package/glibc/Config.in b/package/glibc/Config.in index 81c64083f4..5385e2a855 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS default y if BR2_aarch64 default y if BR2_aarch64_be default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_mips default y if BR2_mipsel diff --git a/package/musl/Config.in b/package/musl/Config.in index a6e2af054c..70475326f5 100644 --- a/package/musl/Config.in +++ b/package/musl/Config.in @@ -5,6 +5,7 @@ config BR2_PACKAGE_MUSL_ARCH_SUPPORTS default y if BR2_arm default y if BR2_armeb default y if BR2_i386 + default y if BR2_loongarch64 default y if BR2_m68k_m68k default y if BR2_microblaze default y if BR2_mips
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> --- arch/Config.in | 12 ++++++++++++ arch/Config.in.loongarch64 | 14 ++++++++++++++ package/glibc/Config.in | 1 + package/musl/Config.in | 1 + 4 files changed, 28 insertions(+) create mode 100644 arch/Config.in.loongarch64