Need to resubmit a new patch, since the same code may be used by other ppc platform such as FreeBSD that may not have the sys/platform/ppc.h
Thinh Tran
On 1/28/2020 3:02 PM, Thinh Tran wrote:
   __ppc_get_timebase() is GNU extention and is more efficient

Signed-off-by: Thinh Tran <thin...@linux.vnet.ibm.com>
---
  .../common/include/arch/ppc_64/rte_cycles.h   | 28 ++-----------------
  1 file changed, 2 insertions(+), 26 deletions(-)

diff --git a/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h 
b/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h
index 8f2e98642..871f9b6e4 100644
--- a/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h
+++ b/lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h
@@ -14,6 +14,7 @@ extern "C" {

  #include <rte_byteorder.h>
  #include <rte_common.h>
+#include <sys/platform/ppc.h>

  /**
   * Read the time base register.
@@ -24,32 +25,7 @@ extern "C" {
  static inline uint64_t
  rte_rdtsc(void)
  {
-       union {
-               uint64_t tsc_64;
-               RTE_STD_C11
-               struct {
-#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
-                       uint32_t hi_32;
-                       uint32_t lo_32;
-#else
-                       uint32_t lo_32;
-                       uint32_t hi_32;
-#endif
-               };
-       } tsc;
-       uint32_t tmp;
-
-       asm volatile(
-                       "0:\n"
-                       "mftbu   %[hi32]\n"
-                       "mftb    %[lo32]\n"
-                       "mftbu   %[tmp]\n"
-                       "cmpw    %[tmp],%[hi32]\n"
-                       "bne     0b\n"
-                       : [hi32] "=r"(tsc.hi_32), [lo32] "=r"(tsc.lo_32),
-                       [tmp] "=r"(tmp)
-                   );
-       return tsc.tsc_64;
+       return __ppc_get_timebase();
  }

  static inline uint64_t

Reply via email to