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