diff options
-rw-r--r-- | src/x86/tsc-x86.s | 2 | ||||
-rw-r--r-- | src/x86_64/tsc-x86_64.s | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/x86/tsc-x86.s b/src/x86/tsc-x86.s index 46013bb..09e0e32 100644 --- a/src/x86/tsc-x86.s +++ b/src/x86/tsc-x86.s @@ -29,9 +29,11 @@ sandglass_get_tsc: pushl %ebx /* Callee-save register, clobbered by cpuid */ pushl %esi + xorl %eax, %eax /* Make cpuid do a consistent operation */ cpuid /* Serialize */ rdtsc /* Read time stamp counter */ movl %eax, %esi /* Store tsc */ + xorl %eax, %eax cpuid /* Serialize again */ movl %esi, %eax popl %esi diff --git a/src/x86_64/tsc-x86_64.s b/src/x86_64/tsc-x86_64.s index 52f02c2..e710891 100644 --- a/src/x86_64/tsc-x86_64.s +++ b/src/x86_64/tsc-x86_64.s @@ -28,11 +28,13 @@ .type sandglass_get_tsc, @function sandglass_get_tsc: movq %rbx, %rdi /* Callee-save register, clobbered by cpuid */ + xorl %eax, %eax /* Make cpuid do a consistent operation */ cpuid /* Serialize */ rdtsc /* Read time stamp counter */ shlq $32, %rdx orq %rdx, %rax movq %rax, %rsi + xorl %eax, %eax cpuid /* Serialize again */ movq %rsi, %rax movq %rdi, %rbx |