x86: fixes read_tsc_serialized()
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 17 Jul 2013 22:16:09 +0000 (15:16 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 19 Jul 2013 23:56:06 +0000 (16:56 -0700)
The compiler was reordering operations (stores, in one case) past the
serialization.

kern/arch/x86/arch.h

index 5042f97..3252d1b 100644 (file)
@@ -84,7 +84,7 @@ static inline uint64_t read_tscp(void)
 /* Check out k/a/x86/rdtsc_test.c for more info */
 static inline uint64_t read_tsc_serialized(void)
 {
-       asm volatile("lfence"); /* mfence on amd */
+       asm volatile("lfence" ::: "memory");    /* mfence on amd? */
        return read_tsc();
 }