]> granicus.if.org Git - pdns/commitdiff
alternate rdtsc() implementation
authorBert Hubert <bert.hubert@netherlabs.nl>
Mon, 17 Jan 2011 20:04:37 +0000 (20:04 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Mon, 17 Jan 2011 20:04:37 +0000 (20:04 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1889 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/rdtsc.hh

index b78a0e8eb7f343567a27182e3854f4cdd46f6593..c65dee3b01e6794bd60d5c078b578fe262bc0a2a 100644 (file)
@@ -1,6 +1,14 @@
 #ifndef PDNS_RDTSC_HH
 #define PDNS_RDTSC_HH
 
+#define rdtsc() \
+({ \
+  unsigned long lowPart, highPart;                                     \
+  __asm__ __volatile__("cpuid"); \
+  __asm__ __volatile__("rdtsc" : "=a" (lowPart), "=d" (highPart)); \
+    ((((unsigned long long) highPart) << 32) | lowPart); \
+})
+
 
 
 #define RDTSC(qp) \