From 92ad4d1ce376de4498282a454f6595a151f693c1 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Tue, 1 Jan 2019 15:41:11 +0000 Subject: [PATCH] NBI: Add lookup tables for ARMv8 --- core/java/src/net/i2p/util/NativeBigInteger.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java index 9e043729de..e64a38e045 100644 --- a/core/java/src/net/i2p/util/NativeBigInteger.java +++ b/core/java/src/net/i2p/util/NativeBigInteger.java @@ -186,6 +186,7 @@ public class NativeBigInteger extends BigInteger { private final static String JBIGI_OPTIMIZATION_ARM_ARMV5 = "armv5"; private final static String JBIGI_OPTIMIZATION_ARM_ARMV6 = "armv6"; private final static String JBIGI_OPTIMIZATION_ARM_ARMV7 = "armv7"; + private final static String JBIGI_OPTIMIZATION_ARM_ARMV8 = "armv8"; private final static String JBIGI_OPTIMIZATION_ARM_CORTEX_A5 = "armcortexa5"; private final static String JBIGI_OPTIMIZATION_ARM_CORTEX_A7 = "armcortexa7"; private final static String JBIGI_OPTIMIZATION_ARM_CORTEX_A8 = "armcortexa8"; @@ -216,6 +217,7 @@ public class NativeBigInteger extends BigInteger { private final static String[] JBIGI_COMPAT_LIST_ARM = {JBIGI_OPTIMIZATION_ARM_CORTEX_A15, JBIGI_OPTIMIZATION_ARM_CORTEX_A9, JBIGI_OPTIMIZATION_ARM_CORTEX_A8, JBIGI_OPTIMIZATION_ARM_CORTEX_A7, JBIGI_OPTIMIZATION_ARM_CORTEX_A5, JBIGI_OPTIMIZATION_ARM_ARMV7, JBIGI_OPTIMIZATION_ARM_ARMV6, JBIGI_OPTIMIZATION_ARM_ARMV5}; + private final static String[] JBIGI_COMPAT_LIST_ARM_ARMV8 = {JBIGI_OPTIMIZATION_ARM_ARMV8}; private final static String[] JBIGI_COMPAT_LIST_VIA = {JBIGI_OPTIMIZATION_NANO, JBIGI_OPTIMIZATION_VIAC32, JBIGI_OPTIMIZATION_VIAC3, JBIGI_OPTIMIZATION_PENTIUM, JBIGI_OPTIMIZATION_X86}; private final static String[] JBIGI_COMPAT_LIST_AMD_ATHLON = {JBIGI_OPTIMIZATION_K10, JBIGI_OPTIMIZATION_ATHLON64, JBIGI_OPTIMIZATION_ATHLON, @@ -247,6 +249,7 @@ public class NativeBigInteger extends BigInteger { put(JBIGI_OPTIMIZATION_ARM_ARMV5, JBIGI_COMPAT_LIST_ARM); put(JBIGI_OPTIMIZATION_ARM_ARMV6, JBIGI_COMPAT_LIST_ARM); put(JBIGI_OPTIMIZATION_ARM_ARMV7, JBIGI_COMPAT_LIST_ARM); + put(JBIGI_OPTIMIZATION_ARM_ARMV8, JBIGI_COMPAT_LIST_ARM_ARMV8); put(JBIGI_OPTIMIZATION_ARM_CORTEX_A5, JBIGI_COMPAT_LIST_ARM); put(JBIGI_OPTIMIZATION_ARM_CORTEX_A7, JBIGI_COMPAT_LIST_ARM); put(JBIGI_OPTIMIZATION_ARM_CORTEX_A8, JBIGI_COMPAT_LIST_ARM); @@ -454,6 +457,8 @@ public class NativeBigInteger extends BigInteger { if (arch != null) { //CPU architecture: 5TEJ //CPU architecture: 7 + if (arch.startsWith("8")) + return JBIGI_OPTIMIZATION_ARM_ARMV8; if (arch.startsWith("7")) { // Raspberry Pi workaround // Processor : ARMv6-compatible processor rev 7 (v6l) @@ -471,6 +476,8 @@ public class NativeBigInteger extends BigInteger { // We couldn't identify the architecture // Let's try by looking at model name if (model != null) { + if (model.contains("ARMv8")) + return JBIGI_OPTIMIZATION_ARM_ARMV8; if (model.contains("ARMv7")) return JBIGI_OPTIMIZATION_ARM_ARMV7; if (model.contains("ARMv6")) @@ -479,6 +486,9 @@ public class NativeBigInteger extends BigInteger { return JBIGI_OPTIMIZATION_ARM_ARMV5; } + if (_is64) + return JBIGI_OPTIMIZATION_ARM_ARMV8; + // If we didn't find a match, return null return null; } else if (_isPPC && !_isMac) { -- GitLab