diff --git a/tools/checkasm.c b/tools/checkasm.c
index 09288a62d339457aa08600c31b5b77bc49f015cf..5b883028134b451480a881043f69e0d783a01a57 100644
--- a/tools/checkasm.c
+++ b/tools/checkasm.c
@@ -113,7 +113,7 @@ static inline uint32_t read_time(void)
     asm volatile( "mrc p15, 0, %0, c9, c13, 0" : "=r"(a) :: "memory" );
 #elif ARCH_AARCH64
     uint64_t b = 0;
-    asm volatile( "mrs %0, pmccntr_el0" : "=r"(b) :: "memory" );
+    asm volatile( "isb; mrs %0, cntvct_el0" : "=r"(b) :: "memory" );
     a = b;
 #elif ARCH_MIPS
     asm volatile( "rdhwr %0, $2" : "=r"(a) :: "memory" );