From 03a18c27ace49cbcbb0c495e4c575c34b8f862a4 Mon Sep 17 00:00:00 2001 From: Martin Pales Date: Thu, 14 Oct 2010 16:31:58 +0200 Subject: zmq::clock_t : return correct value in rdtsc() on solaris Function clock_t::rdtsc() now returns correct value when compiled with sunstudio 12 compiler. Signed-off-by: Martin Pales --- src/clock.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/clock.cpp b/src/clock.cpp index 8eb5fd8..2fa23d0 100644 --- a/src/clock.cpp +++ b/src/clock.cpp @@ -94,6 +94,14 @@ uint64_t zmq::clock_t::rdtsc () uint32_t low, high; __asm__ volatile ("rdtsc" : "=a" (low), "=d" (high)); return (uint64_t) high << 32 | low; +#elif (defined __SUNPRO_CC && (__SUNPRO_CC >= 0x5100) && (defined __i386 || \ + defined __amd64 || defined __x86_64)) + union { + uint64_t u64val; + uint32_t u32val [2]; + } tsc; + asm("rdtsc" : "=a" (tsc.u32val [0]), "=d" (tsc.u32val [1])); + return tsc.u64val; #else return 0; #endif -- cgit v1.2.3