x64: Simplify RDTSC on non-MSVC compilers
Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
This commit is contained in:
		| @@ -33,16 +33,13 @@ __forceinline static void TPAUSE() { | ||||
| } | ||||
| #else | ||||
| static u64 FencedRDTSC() { | ||||
|     u64 result; | ||||
|     u64 eax; | ||||
|     u64 edx; | ||||
|     asm volatile("lfence\n\t" | ||||
|                  "rdtsc\n\t" | ||||
|                  "shl $32, %%rdx\n\t" | ||||
|                  "or %%rdx, %0\n\t" | ||||
|                  "lfence" | ||||
|                  : "=a"(result) | ||||
|                  : | ||||
|                  : "rdx", "memory", "cc"); | ||||
|     return result; | ||||
|                  "lfence\n\t" | ||||
|                  : "=a"(eax), "=d"(edx)); | ||||
|     return (edx << 32) | eax; | ||||
| } | ||||
|  | ||||
| static void TPAUSE() { | ||||
|   | ||||
| @@ -27,16 +27,13 @@ __forceinline static u64 FencedRDTSC() { | ||||
| } | ||||
| #else | ||||
| static u64 FencedRDTSC() { | ||||
|     u64 result; | ||||
|     u64 eax; | ||||
|     u64 edx; | ||||
|     asm volatile("lfence\n\t" | ||||
|                  "rdtsc\n\t" | ||||
|                  "shl $32, %%rdx\n\t" | ||||
|                  "or %%rdx, %0\n\t" | ||||
|                  "lfence" | ||||
|                  : "=a"(result) | ||||
|                  : | ||||
|                  : "rdx", "memory", "cc"); | ||||
|     return result; | ||||
|                  "lfence\n\t" | ||||
|                  : "=a"(eax), "=d"(edx)); | ||||
|     return (edx << 32) | eax; | ||||
| } | ||||
| #endif | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user