From b0d9853c5abd9e5e3bad0b5a8900cbb48eb94664 Mon Sep 17 00:00:00 2001 From: Xuefeng Pan Date: Wed, 25 May 2022 11:13:00 +0800 Subject: [PATCH] Support for LoongArch64 Co-Authored-By: Ao Qi --- CHANGES.md | 1 + build.xml | 6 ++++++ lib/native/linux-loongarch64.jar | Bin 0 -> 50097 bytes src/com/sun/jna/Native.java | 2 +- src/com/sun/jna/Platform.java | 5 +++++ src/com/sun/jna/Structure.java | 4 ++-- 6 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 lib/native/linux-loongarch64.jar diff --git a/CHANGES.md b/CHANGES.md index 470456a22a..ce3377c45c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,7 @@ Features -------- * [#1433](https://github.com/java-native-access/jna/pull/1433): Add `CFEqual`, `CFDictionaryRef.ByReference`, `CFStringRef.ByReference` to `c.s.j.p.mac.CoreFoundation` - [@shalupov](https://github.com/shalupov) * [#978](https://github.com/java-native-access/jna/issues/978): Remove use of finalizers in JNA and improve concurrency for `Memory`, `CallbackReference` and `NativeLibrary` - [@matthiasblaesing](https://github.com/matthiasblaesing). +* [#1440](https://github.com/java-native-access/jna/pull/1440): Support for Loongarch64 - [@Panxuefeng-loongson](https://github.com/Panxuefeng-loongson). Bug Fixes --------- diff --git a/build.xml b/build.xml index b81b9d7584..31a053fe5a 100644 --- a/build.xml +++ b/build.xml @@ -529,6 +529,8 @@ com/sun/jna/linux-mips64el/libjnidispatch.so; processor=mips64el;osname=linux, com/sun/jna/linux-s390x/libjnidispatch.so; processor=S390x;osname=linux, +com/sun/jna/linux-loongarch64/libjnidispatch.so; +processor=loongarch64;osname=linux, com/sun/jna/freebsd-x86/libjnidispatch.so; processor=x86;osname=freebsd, @@ -638,6 +640,9 @@ osname=macosx;processor=aarch64 + @@ -851,6 +856,7 @@ osname=macosx;processor=aarch64 + diff --git a/lib/native/linux-loongarch64.jar b/lib/native/linux-loongarch64.jar new file mode 100644 index 0000000000000000000000000000000000000000..63862b7a1ebc023813466b32b98d87e3f3eae156 GIT binary patch literal 50097 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

;o}g=^E;At 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 literal 0 HcmV?d00001 diff --git a/src/com/sun/jna/Native.java b/src/com/sun/jna/Native.java index b832d4052f..e3c3d8ebef 100644 --- a/src/com/sun/jna/Native.java +++ b/src/com/sun/jna/Native.java @@ -250,7 +250,7 @@ static boolean isCompatibleVersion(String expectedVersion, String nativeVersion) setProtected(true); } MAX_ALIGNMENT = Platform.isSPARC() || Platform.isWindows() - || (Platform.isLinux() && (Platform.isARM() || Platform.isPPC() || Platform.isMIPS())) + || (Platform.isLinux() && (Platform.isARM() || Platform.isPPC() || Platform.isMIPS() || Platform.isLoongArch())) || Platform.isAIX() || (Platform.isAndroid() && !Platform.isIntel()) ? 8 : LONG_SIZE; diff --git a/src/com/sun/jna/Platform.java b/src/com/sun/jna/Platform.java index 7ee19e4a5b..ac1395e95d 100644 --- a/src/com/sun/jna/Platform.java +++ b/src/com/sun/jna/Platform.java @@ -195,6 +195,7 @@ public static final boolean is64Bit() { || "ppc64".equals(ARCH) || "ppc64le".equals(ARCH) || "sparcv9".equals(ARCH) || "mips64".equals(ARCH) || "mips64el".equals(ARCH) + || "loongarch64".equals(ARCH) || "amd64".equals(ARCH) || "aarch64".equals(ARCH)) { return true; @@ -234,6 +235,10 @@ public static final boolean isMIPS() { return false; } + public static final boolean isLoongArch() { + return ARCH.startsWith("loongarch"); + } + static String getCanonicalArchitecture(String arch, int platform) { arch = arch.toLowerCase().trim(); if ("powerpc".equals(arch)) { diff --git a/src/com/sun/jna/Structure.java b/src/com/sun/jna/Structure.java index b2457f69d7..39d3da0efa 100644 --- a/src/com/sun/jna/Structure.java +++ b/src/com/sun/jna/Structure.java @@ -2081,7 +2081,7 @@ public FFIType(Structure ref) { } } if ((Platform.isIntel() && Platform.is64Bit() && !Platform.isWindows()) - || Platform.isARM()) { + || Platform.isARM() || Platform.isLoongArch()) { // System V x86-64 ABI requires, that in a union aggregate, // that contains Integer and Double members, the parameters // must be passed in the integer registers. I.e. in the case @@ -2091,7 +2091,7 @@ public FFIType(Structure ref) { // passing method would be used. // // It was observed, that the same behaviour is visible on - // arm/aarch64. + // arm/aarch64/loongarch64. if(hasInteger && isFloatType(unionType)) { unionType = new FFIType(unionType); if(unionType.size.intValue() == 4) {