From 4e1d396ce1c7d451aaf21dc53d12880fae7b3ba9 Mon Sep 17 00:00:00 2001 From: Sayed Adel Date: Wed, 31 Jan 2018 04:03:35 +0000 Subject: [PATCH] core:ppc Add yield support --- modules/core/src/parallel_impl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/core/src/parallel_impl.cpp b/modules/core/src/parallel_impl.cpp index 8e907905e8..32e540fb06 100644 --- a/modules/core/src/parallel_impl.cpp +++ b/modules/core/src/parallel_impl.cpp @@ -55,6 +55,8 @@ DECLARE_CV_PAUSE # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { asm volatile("yield" ::: "memory"); } } while (0) # elif defined __GNUC__ && defined __arm__ # define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { asm volatile("" ::: "memory"); } } while (0) +# elif defined __GNUC__ && defined __PPC64__ +# define CV_PAUSE(v) do { for (int __delay = (v); __delay > 0; --__delay) { asm volatile("or 27,27,27" ::: "memory"); } } while (0) # else # warning "Can't detect 'pause' (CPU-yield) instruction on the target platform. Specify CV_PAUSE() definition via compiler flags." # define CV_PAUSE(...) do { /* no-op: works, but not effective */ } while (0)