'asm' is a GNU extension.  Compilers without GNU extensions do not
understand it:

  dpif-netdev-perf.h:225:5: error: use of undeclared identifier 'asm'
      asm volatile("rdtsc" : "=a" (l), "=d" (h));

Redefining asm as __asm__ for non-C++ compilers that do not have it
defined.  While at it, also add typeof definition.  It doesn't need
a check for C++, because it's not a keyword in C++.

Signed-off-by: Ilya Maximets <[email protected]>
---
 include/openvswitch/compiler.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/openvswitch/compiler.h b/include/openvswitch/compiler.h
index cf009f826..52614a5ac 100644
--- a/include/openvswitch/compiler.h
+++ b/include/openvswitch/compiler.h
@@ -37,6 +37,16 @@
 #define OVS_NO_RETURN
 #endif
 
+#ifndef typeof
+#define typeof __typeof__
+#endif
+
+#ifndef __cplusplus
+#ifndef asm
+#define asm __asm__
+#endif
+#endif
+
 #if __GNUC__ && !__CHECKER__
 #define OVS_UNUSED __attribute__((__unused__))
 #define OVS_PRINTF_FORMAT(FMT, ARG1) __attribute__((__format__(printf, FMT, 
ARG1)))
-- 
2.40.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to