summaryrefslogtreecommitdiff
path: root/java/openjdk18
diff options
context:
space:
mode:
authorGreg Lewis <glewis@FreeBSD.org>2022-05-07 22:24:21 -0700
committerGreg Lewis <glewis@FreeBSD.org>2022-05-07 22:24:21 -0700
commit1a550987749db80b46153ef8ad5016313b23a51e (patch)
treefff3677e9ebc1f2533ddd0466accaf9cc4edccf2 /java/openjdk18
parentjava/openjdk8: Fix the build on aarch64 (diff)
java/openjdk18: Fix the build on aarch64
Diffstat (limited to 'java/openjdk18')
-rw-r--r--java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.S31
-rw-r--r--java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.hpp38
2 files changed, 69 insertions, 0 deletions
diff --git a/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.S b/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.S
new file mode 100644
index 000000000000..35c926fd1a0a
--- /dev/null
+++ b/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.S
@@ -0,0 +1,31 @@
+--- src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.S
++++ src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.S
+@@ -47,6 +47,28 @@ aarch64_atomic_fetch_add_4_default_impl:
+ mov w0, w2
+ ret
+
++ .global aarch64_atomic_fetch_add_8_relaxed_default_impl
++ .align 5
++aarch64_atomic_fetch_add_8_relaxed_default_impl:
++ prfm pstl1strm, [x0]
++0: ldxr x2, [x0]
++ add x8, x2, x1
++ stxr w9, x8, [x0]
++ cbnz w9, 0b
++ mov x0, x2
++ ret
++
++ .global aarch64_atomic_fetch_add_4_relaxed_default_impl
++ .align 5
++aarch64_atomic_fetch_add_4_relaxed_default_impl:
++ prfm pstl1strm, [x0]
++0: ldxr w2, [x0]
++ add w8, w2, w1
++ stxr w9, w8, [x0]
++ cbnz w9, 0b
++ mov w0, w2
++ ret
++
+ .globl aarch64_atomic_xchg_4_default_impl
+ .align 5
+ aarch64_atomic_xchg_4_default_impl:
diff --git a/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.hpp b/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.hpp
new file mode 100644
index 000000000000..a71932f53fe2
--- /dev/null
+++ b/java/openjdk18/files/patch-src_hotspot_os__cpu_bsd__aarch64_atomic__bsd__aarch64.hpp
@@ -0,0 +1,38 @@
+--- src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp
++++ src/hotspot/os_cpu/bsd_aarch64/atomic_bsd_aarch64.hpp
+@@ -184,9 +184,14 @@ inline D Atomic::PlatformAdd<4>::fetch_and_add(D volatile* dest, I add_value,
+ atomic_memory_order order) const {
+ STATIC_ASSERT(4 == sizeof(I));
+ STATIC_ASSERT(4 == sizeof(D));
+- D old_value
+- = atomic_fastcall(aarch64_atomic_fetch_add_4_impl, dest, add_value);
+- return old_value;
++ aarch64_atomic_stub_t stub;
++ switch (order) {
++ case memory_order_relaxed:
++ stub = aarch64_atomic_fetch_add_4_relaxed_impl; break;
++ default:
++ stub = aarch64_atomic_fetch_add_4_impl; break;
++ }
++ return atomic_fastcall(stub, dest, add_value);
+ }
+
+ template<>
+@@ -195,9 +200,14 @@ inline D Atomic::PlatformAdd<8>::fetch_and_add(D volatile* dest, I add_value,
+ atomic_memory_order order) const {
+ STATIC_ASSERT(8 == sizeof(I));
+ STATIC_ASSERT(8 == sizeof(D));
+- D old_value
+- = atomic_fastcall(aarch64_atomic_fetch_add_8_impl, dest, add_value);
+- return old_value;
++ aarch64_atomic_stub_t stub;
++ switch (order) {
++ case memory_order_relaxed:
++ stub = aarch64_atomic_fetch_add_8_relaxed_impl; break;
++ default:
++ stub = aarch64_atomic_fetch_add_8_impl; break;
++ }
++ return atomic_fastcall(stub, dest, add_value);
+ }
+
+ template<>