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