CVS commit: pkgsrc/lang/openjdk21

"Tobias Nygren" <[email protected]>
Newsgroups gmane.os.netbsd.devel.pkgsrc.cvs
Message-ID <[email protected]>
Module Name:	pkgsrc
Committed By:	tnn
Date:		Sun Aug 16 11:54:29 UTC 2026

Modified Files:
	pkgsrc/lang/openjdk21: distinfo
Added Files:
	pkgsrc/lang/openjdk21/patches:
	    patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp

Log Message:
openjdk21: Add runtime CPU detection support for NetBSD aarch64


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 pkgsrc/lang/openjdk21/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/lang/openjdk21/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
(unnamed) (text/x-diff, 6.1 KB)
Modified files:

Index: pkgsrc/lang/openjdk21/distinfo
diff -u pkgsrc/lang/openjdk21/distinfo:1.16 pkgsrc/lang/openjdk21/distinfo:1.17
--- pkgsrc/lang/openjdk21/distinfo:1.16	Fri Aug 14 12:52:05 2026
+++ pkgsrc/lang/openjdk21/distinfo	Sun Aug 16 11:54:29 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.16 2026/08/14 12:52:05 ryoon Exp $
+$NetBSD: distinfo,v 1.17 2026/08/16 11:54:29 tnn Exp $
 
 BLAKE2s (bootstrap-jdk-1.21.0.1.12-netbsd-9-amd64-20231207.tar.xz) = 017a9d787a34faa997d72ac69bcafd9c8ab72354e3a1b751d1cb5d376b364f72
 SHA512 (bootstrap-jdk-1.21.0.1.12-netbsd-9-amd64-20231207.tar.xz) = 7ec4208363f44a378674a2b87687ab7facb60bf73118ebd4bec35f7912f073365b36efc4c4b3c034bc448139cb81106e18d6d3b1db45f4ab086ce1ed72bc21bf
@@ -20,6 +20,7 @@ SHA1 (patch-make_autoconf_lib-bundled.m4
 SHA1 (patch-make_autoconf_lib-freetype.m4) = bd791b99e4fd87f24432831fba1e814dd199445f
 SHA1 (patch-make_autoconf_lib-x11.m4) = 38038e6d7cfc2d15fb3537a52f11d2961cc2ec99
 SHA1 (patch-make_lib_Awt2dLibraries.gmk) = d69fa8c5cab173be2f41cfbd6479dad60a6337db
+SHA1 (patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp) = 3e0597bf836b23ae1a808834a0c1a9874ae47915
 SHA1 (patch-src_hotspot_os_bsd_os__bsd.cpp) = 5561ed502aa925cd3d0514c7ec298e0491d14ffc
 SHA1 (patch-src_hotspot_share_runtime_threadWXSetters.inline.hpp) = f704bb060803e500415b5d300e26857cf7288ca5
 SHA1 (patch-src_java.desktop_bsd_data_fontconfig_fontconfig.properties) = 32eda43f536dc3a9afb4f1f5f7acae8cb020d546

Added files:

Index: pkgsrc/lang/openjdk21/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp
diff -u /dev/null pkgsrc/lang/openjdk21/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp:1.1
--- /dev/null	Sun Aug 16 11:54:29 2026
+++ pkgsrc/lang/openjdk21/patches/patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp	Sun Aug 16 11:54:29 2026
@@ -0,0 +1,119 @@
+$NetBSD: patch-src_hotspot_os__cpu_bsd__aarch64_vm__version__bsd__aarch64.cpp,v 1.1 2026/08/16 11:54:29 tnn Exp $
+
+Add runtime CPU detection support for NetBSD.
+
+--- src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp.orig	2026-08-16 10:56:39.893223726 +0000
++++ src/hotspot/os_cpu/bsd_aarch64/vm_version_bsd_aarch64.cpp
+@@ -27,6 +27,13 @@
+ #include "precompiled.hpp"
+ #include "runtime/os.hpp"
+ #include "vm_version_aarch64.hpp"
++#if defined(__NetBSD__)
++#include "register_aarch64.hpp" // for FloatRegister
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#include <machine/armreg.h>
++#include <stdio.h>
++#endif
+ 
+ void VM_Version::get_compatible_board(char *buf, int buflen) {
+   assert(buf != nullptr, "invalid argument");
+@@ -541,6 +548,98 @@ void VM_Version::get_os_cpu_info() {
+   }
+ #endif // __FreeBSD__
+ #endif // __FreeBSD__ || __OpenBSD__
++
++#if defined(__NetBSD__)
++  size_t len;
++  int curcpu;
++  int mib[] = { CTL_HW, HW_NCPU };
++  int ncpu;
++  struct aarch64_sysctl_cpu_id id;
++  char path[32];
++  int num_fp = 0;
++  int num_asimd = 0;
++  int num_aes = 0;
++  int num_pmull = 0;
++  int num_sha1 = 0;
++  int num_sha2 = 0;
++  int num_crc32 = 0;
++  int num_lse = 0;
++  int num_dcpop = 0;
++  int num_sha3 = 0;
++  int num_sha512 = 0;
++  int num_sve = 0;
++  int num_paca = 0;
++  len = sizeof(ncpu);
++  if (sysctl(mib, 2, &ncpu, &len, NULL, 0) < 0)
++    return;
++  for (curcpu = 0; curcpu < ncpu; curcpu++) {
++    len = sizeof(id);
++    snprintf(path, sizeof(path), "machdep.cpu%d.cpu_id", curcpu);
++    if (sysctlbyname(path, &id, &len, NULL, 0) < 0)
++      continue;
++
++    if (__SHIFTOUT(id.ac_aa64pfr0,  ID_AA64PFR0_EL1_FP) == ID_AA64PFR0_EL1_FP_IMPL)
++      num_fp++;
++    if (__SHIFTOUT(id.ac_aa64pfr0,  ID_AA64PFR0_EL1_ADVSIMD) == ID_AA64PFR0_EL1_ADV_SIMD_IMPL)
++     num_asimd++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) >= ID_AA64ISAR0_EL1_AES_AES)
++     num_aes++;
++    if ( __SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) >= ID_AA64ISAR0_EL1_AES_PMUL)
++      num_pmull++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA1) >= ID_AA64ISAR0_EL1_SHA1_SHA1CPMHSU)
++      num_sha1++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) >= ID_AA64ISAR0_EL1_SHA2_SHA256HSU)
++      num_sha2++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_CRC32) >= ID_AA64ISAR0_EL1_CRC32_CRC32X)
++      num_crc32++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_ATOMIC) >= ID_AA64ISAR0_EL1_ATOMIC_SWP)
++      num_lse++;
++    if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_DPB) >= ID_AA64ISAR1_EL1_DPB_CVAP)
++      num_dcpop++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA3) >= ID_AA64ISAR0_EL1_SHA3_EOR3)
++      num_sha3++;
++    if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) >= ID_AA64ISAR0_EL1_SHA2_SHA512HSU)
++      num_sha512++;
++    if (__SHIFTOUT(id.ac_aa64pfr0,  ID_AA64PFR0_EL1_SVE) >= ID_AA64PFR0_EL1_SVE_IMPL)
++      num_sve++;
++    if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_APA) >= ID_AA64ISAR1_EL1_APA_QARMA ||
++        __SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_API) >= ID_AA64ISAR1_EL1_API_SUPPORTED)
++     num_paca++;
++    // TODO: SVE2 and SVE_BITPERM live in id.ac_aa64zfr0 but shiftout macros are not yet added to armreg.h
++  }
++  _features = 0;
++  if (num_fp == ncpu)
++    _features |= CPU_FP;
++  if (num_asimd == ncpu)
++    _features |= CPU_ASIMD;
++  if (num_aes == ncpu)
++    _features |= CPU_AES;
++  if (num_pmull == ncpu)
++     _features |= CPU_PMULL;
++  if (num_sha1 == ncpu)
++     _features |= CPU_SHA1;
++  if (num_sha2 == ncpu)
++     _features |= CPU_SHA2;
++  if (num_crc32 == ncpu)
++    _features |= CPU_CRC32;
++  if (num_lse == ncpu)
++    _features |= CPU_LSE;
++  if (num_dcpop == ncpu)
++    _features |= CPU_DCPOP;
++  if (num_sha3 == ncpu)
++    _features |= CPU_SHA3;
++  if (num_sha512 == ncpu)
++    _features |= CPU_SHA512;
++  if (num_sve == ncpu)
++    _features |= CPU_SVE;
++  if (num_paca == ncpu)
++    _features |= CPU_PACA;
++
++  _cpu = CPU_IMPL(id.ac_midr);
++  _model = CPU_PART(id.ac_midr);
++  _variant = CPU_VAR(id.ac_midr);
++  _revision = CPU_REV(id.ac_midr);
++#endif
+ 
+   /*
+    * Step 3: Get cache line sizes and _zva_length using same approach as Linux.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.