summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/image.mk1
-rw-r--r--mk/linux-ver.mk6
-rwxr-xr-xscripts/config.sub2
-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
13 files changed, 110 insertions, 1 deletions
diff --git a/mk/image.mk b/mk/image.mk
index bc1fe5223..f17f26c12 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -229,6 +229,7 @@ createinitramfs: ${STAGING_TARGET_DIR}/${INITRAMFS}_list
echo 'CONFIG_INITRAMFS_ROOT_UID=0'; \
echo 'CONFIG_INITRAMFS_ROOT_GID=0'; \
echo 'CONFIG_INITRAMFS_IS_LARGE=n'; \
+ echo 'CONFIG_INITRAMFS_PRESERVE_MTIME=n'; \
) >> ${LINUX_DIR}/.config
ifeq ($(ADK_LINUX_KERNEL_COMP_XZ),y)
echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config
diff --git a/mk/linux-ver.mk b/mk/linux-ver.mk
index 52648efe3..6126798f9 100644
--- a/mk/linux-ver.mk
+++ b/mk/linux-ver.mk
@@ -15,6 +15,12 @@ KERNEL_FILE_VER:= $(ADK_TARGET_LINUX_KERNEL_GIT)
KERNEL_RELEASE:= 1
KERNEL_VERSION:= $(ADK_TARGET_LINUX_KERNEL_GIT_VER)-$(KERNEL_RELEASE)
endif
+ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_19),y)
+KERNEL_FILE_VER:= 5.19
+KERNEL_RELEASE:= 1
+KERNEL_VERSION:= $(KERNEL_FILE_VER)-$(KERNEL_RELEASE)
+KERNEL_HASH:= ff240c579b9ee1affc318917de07394fc1c3bb49dac25ec1287370c2e15005a8
+endif
ifeq ($(ADK_TARGET_LINUX_KERNEL_VERSION_5_15),y)
KERNEL_FILE_VER:= 5.15.23
KERNEL_RELEASE:= 1
diff --git a/scripts/config.sub b/scripts/config.sub
index 111b01fc2..1e9cd5a84 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -1185,7 +1185,7 @@ case $cpu-$vendor in
| kvx \
| k1om \
| le32 | le64 \
- | lm32 \
+ | lm32 | loongarch64 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
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.
+