Blame SOURCES/8186461-pr3557.patch
|
|
43ae3d |
# HG changeset patch
|
|
|
43ae3d |
# User glaubitz
|
|
|
43ae3d |
# Date 1524889690 -3600
|
|
|
43ae3d |
# Sat Apr 28 05:28:10 2018 +0100
|
|
|
43ae3d |
# Node ID be1379a186ba527b32c93a83e04c9600735fe44b
|
|
|
43ae3d |
# Parent 91ab2eac9856ec86c16c0bedd32e0b87974ead6f
|
|
|
43ae3d |
8186461, PR3557: Zero's atomic_copy64() should use SPE instructions on linux-powerpcspe
|
|
|
43ae3d |
Reviewed-by: aph
|
|
|
43ae3d |
|
|
|
43ae3d |
diff --git openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
|
|
|
43ae3d |
--- openjdk.orig/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
|
|
|
43ae3d |
+++ openjdk/hotspot/src/os_cpu/linux_zero/vm/os_linux_zero.hpp
|
|
|
43ae3d |
@@ -36,12 +36,18 @@
|
|
|
43ae3d |
|
|
|
43ae3d |
// Atomically copy 64 bits of data
|
|
|
43ae3d |
static void atomic_copy64(volatile void *src, volatile void *dst) {
|
|
|
43ae3d |
-#if defined(PPC32)
|
|
|
43ae3d |
+#if defined(PPC32) && !defined(__SPE__)
|
|
|
43ae3d |
double tmp;
|
|
|
43ae3d |
asm volatile ("lfd %0, %2\n"
|
|
|
43ae3d |
"stfd %0, %1\n"
|
|
|
43ae3d |
: "=&f"(tmp), "=Q"(*(volatile double*)dst)
|
|
|
43ae3d |
: "Q"(*(volatile double*)src));
|
|
|
43ae3d |
+#elif defined(PPC32) && defined(__SPE__)
|
|
|
43ae3d |
+ long tmp;
|
|
|
43ae3d |
+ asm volatile ("evldd %0, %2\n"
|
|
|
43ae3d |
+ "evstdd %0, %1\n"
|
|
|
43ae3d |
+ : "=&r"(tmp), "=Q"(*(volatile long*)dst)
|
|
|
43ae3d |
+ : "Q"(*(volatile long*)src));
|
|
|
43ae3d |
#elif defined(S390) && !defined(_LP64)
|
|
|
43ae3d |
double tmp;
|
|
|
43ae3d |
asm volatile ("ld %0, 0(%1)\n"
|