已合并
替换rdtscp指令集为rdtsc,兼容不存在该指令集的机器 #8998
替换rdtscp指令集为rdtsc,兼容不存在该指令集的机器 #8998
已合并
zhangxubo创建于 2月14日
1 个文件变更+4-1
Msrc/gausskernel/storage/mot/core/infra/synchronization/cycles.h+4-1
@@ -69,7 +69,10 @@ public:
69 {69 {
70#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))70#if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
71 uint32_t low, high;71 uint32_t low, high;
72- __asm__ __volatile__("rdtscp" : "=a"(low), "=d"(high) : : "%rcx");72+ __asm__ __volatile__("mfence\n\t"
73+ "rdtsc"
74+ : "=a"(low), "=d"(high)
75+ );
73 return (((uint64_t)high << 32) | low);76 return (((uint64_t)high << 32) | low);
74#elif defined(__aarch64__)77#elif defined(__aarch64__)
75 unsigned long cval = 0;78 unsigned long cval = 0;