diff -r fcad92f425c5 -r 56bf71d64d51 src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp --- a/src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp Mon Nov 25 14:06:13 2019 +0100 +++ b/src/hotspot/os_cpu/linux_ppc/atomic_linux_ppc.hpp Mon Nov 25 12:22:13 2019 +0100 @@ -30,6 +30,7 @@ #error "Atomic currently only implemented for PPC64" #endif +#include "orderAccess_linux_ppc.hpp" #include "utilities/debug.hpp" // Implementation of class atomic @@ -399,4 +400,16 @@ return old_value; } +template +struct Atomic::PlatformOrderedLoad +{ + template + T operator()(const volatile T* p) const { + T t = Atomic::load(p); + // Use twi-isync for load_acquire (faster than lwsync). + __asm__ __volatile__ ("twi 0,%0,0\n isync\n" : : "r" (t) : "memory"); + return t; + } +}; + #endif // OS_CPU_LINUX_PPC_ATOMIC_LINUX_PPC_HPP