]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Use compiler intrinsic for TSC
authorJan Janssen <medhefgo@web.de>
Wed, 12 Apr 2023 21:33:29 +0000 (23:33 +0200)
committerJan Janssen <medhefgo@web.de>
Thu, 13 Apr 2023 13:36:27 +0000 (15:36 +0200)
src/boot/efi/ticks.c

index 13972528cd59136d114304e58b856d8ed11c3309..84dfdc454263d7db1a85c61095869b874e72ac8b 100644 (file)
@@ -4,28 +4,15 @@
 #include "util.h"
 #include "vmm.h"
 
-#ifdef __x86_64__
+#if defined(__i386__) || defined(__x86_64__)
 static uint64_t ticks_read(void) {
-        uint64_t a, d;
-
         /* The TSC might or might not be virtualized in VMs (and thus might not be accurate or start at zero
          * at boot), depending on hypervisor and CPU functionality. If it's not virtualized it's not useful
          * for keeping time, hence don't attempt to use it. */
         if (in_hypervisor())
                 return 0;
 
-        __asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
-        return (d << 32) | a;
-}
-#elif defined(__i386__)
-static uint64_t ticks_read(void) {
-        uint64_t val;
-
-        if (in_hypervisor())
-                return 0;
-
-        __asm__ volatile ("rdtsc" : "=A" (val));
-        return val;
+        return __builtin_ia32_rdtsc();
 }
 #elif defined(__aarch64__)
 static uint64_t ticks_read(void) {