summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/arch.lst1
-rw-r--r--target/config/Config.in.compiler5
-rw-r--r--target/config/Config.in.cpu9
-rw-r--r--target/config/Config.in.libc1
-rw-r--r--target/linux/Config.in.kernelcfg1
-rw-r--r--target/linux/Config.in.kernelversion8
-rw-r--r--target/linux/arch.lst1
-rw-r--r--target/loongarch/Makefile62
-rw-r--r--target/loongarch/kernel/qemu-loongarch7
-rw-r--r--target/loongarch/systems/qemu-loongarch7
10 files changed, 102 insertions, 0 deletions
diff --git a/target/arch.lst b/target/arch.lst
index 8ef05f730..d801075d8 100644
--- a/target/arch.lst
+++ b/target/arch.lst
@@ -16,6 +16,7 @@ hppa
ia64
kvx
lm32
+loongarch
m32c
m32r
m68k
diff --git a/target/config/Config.in.compiler b/target/config/Config.in.compiler
index fa08eae29..175cd5afb 100644
--- a/target/config/Config.in.compiler
+++ b/target/config/Config.in.compiler
@@ -37,12 +37,14 @@ config ADK_TOOLCHAIN_GCC_11
bool "11.3.0"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_METAG
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_10
bool "10.3.0"
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_9
bool "9.4.0"
@@ -50,6 +52,7 @@ config ADK_TOOLCHAIN_GCC_9
depends on !ADK_TARGET_ARCH_AVR32
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_8
bool "8.5.0"
@@ -60,6 +63,7 @@ config ADK_TOOLCHAIN_GCC_8
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_OR1K
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_7
bool "7.5.0"
@@ -70,6 +74,7 @@ config ADK_TOOLCHAIN_GCC_7
depends on !ADK_TARGET_ARCH_METAG
depends on !ADK_TARGET_ARCH_NDS32
depends on !ADK_TARGET_ARCH_OR1K
+ depends on !ADK_TARGET_ARCH_LOONGARCH
config ADK_TOOLCHAIN_GCC_ARC
bool "arc-2021.09"
diff --git a/target/config/Config.in.cpu b/target/config/Config.in.cpu
index 1b32fe20e..56befd8ef 100644
--- a/target/config/Config.in.cpu
+++ b/target/config/Config.in.cpu
@@ -553,6 +553,14 @@ config ADK_TARGET_CPU_LM32
select ADK_TARGET_UCLINUX
depends on ADK_TARGET_ARCH_LM32
+# loongarch
+config ADK_TARGET_CPU_LOONGARCH
+ bool "loongarch64"
+ select ADK_TARGET_SUPPORTS_THREADS
+ select ADK_TARGET_SUPPORTS_NPTL
+ select ADK_TARGET_WITH_MMU
+ depends on ADK_TARGET_ARCH_LOONGARCH
+
# coldfire
config ADK_TARGET_CPU_CF_51
bool "coldfire 51"
@@ -2214,6 +2222,7 @@ config ADK_TARGET_CPU_ARCH
default "ia64" if ADK_TARGET_ARCH_IA64
default "kvx" if ADK_TARGET_ARCH_KVX
default "lm32" if ADK_TARGET_ARCH_LM32
+ default "loongarch64" if ADK_TARGET_ARCH_LOONGARCH
default "m32c" if ADK_TARGET_ARCH_M32C
default "m32r" if ADK_TARGET_ARCH_M32R
default "m68k" if ADK_TARGET_ARCH_M68K
diff --git a/target/config/Config.in.libc b/target/config/Config.in.libc
index b071ed5af..477dcd10a 100644
--- a/target/config/Config.in.libc
+++ b/target/config/Config.in.libc
@@ -77,6 +77,7 @@ config ADK_TARGET_LIB_GLIBC
ADK_TARGET_ARCH_CSKY || \
ADK_TARGET_ARCH_HPPA || \
ADK_TARGET_ARCH_IA64 || \
+ ADK_TARGET_ARCH_LOONGARCH || \
ADK_TARGET_ARCH_M68K || \
ADK_TARGET_ARCH_MICROBLAZE || \
ADK_TARGET_ARCH_MIPS || \
diff --git a/target/linux/Config.in.kernelcfg b/target/linux/Config.in.kernelcfg
index 749ed430f..50fff5c5d 100644
--- a/target/linux/Config.in.kernelcfg
+++ b/target/linux/Config.in.kernelcfg
@@ -49,6 +49,7 @@ config ADK_TARGET_LINUX_KERNEL_DEFCONFIG
default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F429
default "stm32_defconfig" if ADK_TARGET_SYSTEM_ST_STM32F769
default "nommu_k210_defconfig" if ADK_TARGET_SYSTEM_SIPEED_MAIX_BIT
+ default "loongson3_defconfig" if ADK_TARGET_SYSTEM_QEMU_LOONGARCH
default ""
config ADK_TARGET_LINUX_KERNEL_CUSTOMCONFIG_PATH
diff --git a/target/linux/Config.in.kernelversion b/target/linux/Config.in.kernelversion
index 0206923db..af844978b 100644
--- a/target/linux/Config.in.kernelversion
+++ b/target/linux/Config.in.kernelversion
@@ -34,6 +34,14 @@ config ADK_TARGET_LINUX_KERNEL_VERSION_GIT
select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_SOLIDRUN_IMX6
select ADK_TARGET_LINUX_KERNEL_IMAGE if ADK_TARGET_SYSTEM_BEAGLEBONE_BLACK
+config ADK_TARGET_LINUX_KERNEL_VERSION_5_19
+ bool "5.19"
+ depends on !ADK_TARGET_ARCH_AVR32
+ depends on !ADK_TARGET_ARCH_BFIN
+ depends on !ADK_TARGET_ARCH_CRIS
+ depends on !ADK_TARGET_ARCH_FRV
+ depends on !ADK_TARGET_ARCH_METAG
+
config ADK_TARGET_LINUX_KERNEL_VERSION_5_15
bool "5.15.23"
depends on !ADK_TARGET_ARCH_AVR32
diff --git a/target/linux/arch.lst b/target/linux/arch.lst
index 5810d9174..94d0f018f 100644
--- a/target/linux/arch.lst
+++ b/target/linux/arch.lst
@@ -13,6 +13,7 @@ hppa
ia64
kvx
lm32
+loongarch
m68k
metag
microblaze
diff --git a/target/loongarch/Makefile b/target/loongarch/Makefile
new file mode 100644
index 000000000..b8569d69a
--- /dev/null
+++ b/target/loongarch/Makefile
@@ -0,0 +1,62 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+include $(ADK_TOPDIR)/mk/kernel-build.mk
+include $(ADK_TOPDIR)/mk/image.mk
+
+KERNEL:=$(LINUX_DIR)/vmlinux
+
+QEMU_ARGS:=-M virt
+QEMU_ARGS+=-nographic
+#
+# target helper text
+ifeq ($(ADK_TARGET_FS),archive)
+targethelp:
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSTARBALL)"
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "Use following command to create a QEMU Image:"
+ @echo "./scripts/create.sh qemu-${ADK_TARGET_CPU_ARCH}.img $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+ @echo "Start qemu with following options:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) qemu-${ADK_TARGET_CPU_ARCH}.img'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfs)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo 'The initramfs image is: ${FW_DIR}/${INITRAMFS}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL) -initrd ${FW_DIR}/${INITRAMFS}'
+endif
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+targethelp:
+ @echo 'The kernel file is: $(FW_DIR)/${TARGET_KERNEL}'
+ @echo "The RootFS tarball is: $(FW_DIR)/$(ROOTFSUSERTARBALL)"
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+targethelp:
+ @echo 'The kernel+initramfs file is: $(FW_DIR)/${TARGET_KERNEL}'
+ifeq ($(ADK_TARGET_QEMU),y)
+ @echo "Start qemu with following command line:"
+ @echo 'qemu-system-${ADK_TARGET_CPU_ARCH} ${QEMU_ARGS} -kernel $(FW_DIR)/$(TARGET_KERNEL)'
+endif
+endif
+
+kernel-strip:
+
+kernel-install: kernel-strip
+ @cp $(KERNEL) $(FW_DIR)/$(TARGET_KERNEL)
+
+# filesystem specific targets
+ifeq ($(ADK_TARGET_FS),initramfs)
+imageinstall: kernel-install $(FW_DIR)/$(INITRAMFS) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfsarchive)
+imageinstall: kernel-install $(FW_DIR)/$(ROOTFSUSERTARBALL) targethelp
+endif
+ifeq ($(ADK_TARGET_FS),initramfspiggyback)
+imageinstall: createinitramfs targethelp
+endif
diff --git a/target/loongarch/kernel/qemu-loongarch b/target/loongarch/kernel/qemu-loongarch
new file mode 100644
index 000000000..582028585
--- /dev/null
+++ b/target/loongarch/kernel/qemu-loongarch
@@ -0,0 +1,7 @@
+CONFIG_LOONGARCH=y
+CONFIG_64BIT=y
+CONFIG_MACH_LOONGSON64=y
+CONFIG_EFI=y
+CONFIG_SMP=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
diff --git a/target/loongarch/systems/qemu-loongarch b/target/loongarch/systems/qemu-loongarch
new file mode 100644
index 000000000..b5f6c3d34
--- /dev/null
+++ b/target/loongarch/systems/qemu-loongarch
@@ -0,0 +1,7 @@
+config ADK_TARGET_SYSTEM_QEMU_LOONGARCH
+ bool "Qemu Emulator"
+ select ADK_TARGET_QEMU
+ select ADK_TARGET_CPU_LOONGARCH
+ help
+ Support for Qemu Emulator Loongarch architecture.
+