malta: update MIPS64 ISA to R2
authorTony Ambardar <itugrok@yahoo.com>
Fri, 14 Aug 2020 05:11:22 +0000 (22:11 -0700)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 11 Oct 2020 14:16:24 +0000 (16:16 +0200)
Usage of current R1 ISA is inconsistent with the MIPS32 subtarget, little
used and has limited utility for testing.

Many distros target a minimum R2 ISA. Debian MIPS 32-bit/64-bit ports all
use MIPS R2 ISA since Stretch, for example. Fedora's MIPS arch also targets
the R2 ISA for 32-bit/64-bit.

Widely used MIPS64 platforms like Octeon are based on the MIPS R2 ISA or
later, and benefit from having a compatible test platform in OpenWRT.

While Linux does support MIPS64 R1 targets, its usefulness for development
and testing is limited. As an example, the modern Linux eBPF JIT requires
a MIPS R2 ISA or later.

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
[Refresh config and fix README]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
include/target.mk
target/linux/malta/README
target/linux/malta/be64/config-default
target/linux/malta/be64/target.mk
target/linux/malta/le64/config-default
target/linux/malta/le64/target.mk

index 93c1c42552ea7fad22d5ea286cb1a8c77a88cc8e..d593a5f0df643592225e2d6540a45a4be67e6ff1 100644 (file)
@@ -198,6 +198,7 @@ ifeq ($(DUMP),1)
     CPU_CFLAGS += -mno-branch-likely
     CPU_CFLAGS_mips32 = -mips32 -mtune=mips32
     CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
+    CPU_CFLAGS_mips64r2 = -mips64r2 -mtune=mips64r2 -mabi=64
     CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
     CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
     CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
index 0bb1a1e35a5ca63750a08b7df15c374591195725..bbe806de3d6671d69ecc3db0fcfccf9f9176de13 100644 (file)
@@ -11,9 +11,9 @@ For the 32 bit big-endian image:
 qemu-system-mips -kernel bin/targets/malta/be/openwrt-malta-be-vmlinux-initramfs.elf -nographic -m 256
 
 For the 64 bit little-endian image:
-qemu-system-mips64el -kernel bin/targets/malta/le64/openwrt-malta-le64-vmlinux-initramfs.elf -nographic -m 256
+qemu-system-mips64el -kernel bin/targets/malta/le64/openwrt-malta-le64-vmlinux-initramfs.elf -cpu MIPS64R2-generic -nographic -m 256
 
 For the 64 bit big-endian image:
-qemu-system-mips64 -kernel bin/targets/malta/be64/openwrt-malta-be64-vmlinux-initramfs.elf -nographic -m 256
+qemu-system-mips64 -kernel bin/targets/malta/be64/openwrt-malta-be64-vmlinux-initramfs.elf -cpu MIPS64R2-generic -nographic -m 256
 
 and enjoy the system bootin.
index e7352e68ee62462e0c0edd6cf5494a626cf02e0c..fee1bc8c9dce36f4b2b21cf73bb68498dfac6297 100644 (file)
@@ -6,18 +6,27 @@ CONFIG_ARCH_MMAP_RND_BITS_MAX=18
 CONFIG_ARCH_MMAP_RND_BITS_MIN=12
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_CPU_BIG_ENDIAN=y
+CONFIG_CPU_HAS_RIXI=y
 # CONFIG_CPU_LITTLE_ENDIAN is not set
 CONFIG_CPU_MIPS64=y
-CONFIG_CPU_MIPS64_R1=y
+CONFIG_CPU_MIPS64_R2=y
+CONFIG_CPU_MIPSR2=y
 CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
 CONFIG_CPU_SUPPORTS_HUGEPAGES=y
+CONFIG_CPU_SUPPORTS_MSA=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_EBPF_JIT=y
+CONFIG_HAVE_KVM=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 # CONFIG_MIPS32_N32 is not set
 # CONFIG_MIPS32_O32 is not set
+CONFIG_MIPS_EBPF_JIT=y
+CONFIG_MIPS_PGD_C0_CONTEXT=y
+CONFIG_MIPS_SPRAM=y
 # CONFIG_MIPS_VA_BITS_48 is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_TARGET_ISA_REV=2
 CONFIG_ZONE_DMA32=y
index 3a5bb6a6dc49344675268af8103b42404321bb6a..e992c2c69860bf2655495ca2f11d12db9ad92829 100644 (file)
@@ -1,5 +1,5 @@
 ARCH:=mips64
-CPU_TYPE:=mips64
+CPU_TYPE:=mips64r2
 SUBTARGET:=be64
 FEATURES+=source-only
 BOARDNAME:=Big Endian (64-bits)
index 23e838aaba418e0744a86facb64bae7146059f02..531d93d58ebac19b0a9f910a88e99c27242b3f99 100644 (file)
@@ -5,18 +5,27 @@ CONFIG_ARCH_MMAP_RND_BITS=12
 CONFIG_ARCH_MMAP_RND_BITS_MAX=18
 CONFIG_ARCH_MMAP_RND_BITS_MIN=12
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_CPU_HAS_RIXI=y
 CONFIG_CPU_LITTLE_ENDIAN=y
 CONFIG_CPU_MIPS64=y
-CONFIG_CPU_MIPS64_R1=y
+CONFIG_CPU_MIPS64_R2=y
+CONFIG_CPU_MIPSR2=y
 CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
 CONFIG_CPU_SUPPORTS_HUGEPAGES=y
+CONFIG_CPU_SUPPORTS_MSA=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_EBPF_JIT=y
+CONFIG_HAVE_KVM=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 # CONFIG_MIPS32_N32 is not set
 # CONFIG_MIPS32_O32 is not set
+CONFIG_MIPS_EBPF_JIT=y
+CONFIG_MIPS_PGD_C0_CONTEXT=y
+CONFIG_MIPS_SPRAM=y
 # CONFIG_MIPS_VA_BITS_48 is not set
 CONFIG_MODULES_USE_ELF_RELA=y
 CONFIG_PGTABLE_LEVELS=3
 CONFIG_PHYS_ADDR_T_64BIT=y
 CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_TARGET_ISA_REV=2
 CONFIG_ZONE_DMA32=y
index a0a55af5f778ab156f5ef0ac65bc447184322f3e..59dcc86befe2574d90d9e7f397e57c2499fd43ee 100644 (file)
@@ -1,5 +1,5 @@
 ARCH:=mips64el
-CPU_TYPE:=mips64
+CPU_TYPE:=mips64r2
 SUBTARGET:=le64
 FEATURES+=source-only
 BOARDNAME:=Little Endian (64-bits)