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