1 #pragma once 2 3 #include <darwintest.h> 4 5 #define TEST_ITERATIONS 10000000 6 #define ITERATIONS_BETWEEN_LOGS 100000 7 8 #define CNTFREQ_24_MHZ 24000000ULL 9 #define CNTFREQ_1_GHZ 1000000000ULL 10 11 #if __arm64__ 12 static void agt_test_helper(bool expect_1ghz)13agt_test_helper(bool expect_1ghz) 14 { 15 for (unsigned i = 0; i < TEST_ITERATIONS; i++) { 16 const uint64_t freq = __builtin_arm_rsr64("CNTFRQ_EL0"); 17 18 if (expect_1ghz) { 19 T_QUIET; T_ASSERT_EQ(freq, CNTFREQ_1_GHZ, "Expecting CNTFRQ_EL0 reads 1 GHz"); 20 } else { 21 T_QUIET; T_ASSERT_EQ(freq, CNTFREQ_24_MHZ, "Expecting CNTFRQ_EL0 reads 24 MHz"); 22 } 23 24 if (i % ITERATIONS_BETWEEN_LOGS == 0) { 25 T_LOG("%s: %u iterations ...", __func__, i); 26 } 27 } 28 } 29 #endif /* __arm64__ */ 30