1*80166904SRaghavendra Rao Ananta /* SPDX-License-Identifier: GPL-2.0 */ 2*80166904SRaghavendra Rao Ananta /* 3*80166904SRaghavendra Rao Ananta * ARM simple delay routines 4*80166904SRaghavendra Rao Ananta */ 5*80166904SRaghavendra Rao Ananta 6*80166904SRaghavendra Rao Ananta #ifndef SELFTEST_KVM_ARM_DELAY_H 7*80166904SRaghavendra Rao Ananta #define SELFTEST_KVM_ARM_DELAY_H 8*80166904SRaghavendra Rao Ananta 9*80166904SRaghavendra Rao Ananta #include "arch_timer.h" 10*80166904SRaghavendra Rao Ananta __delay(uint64_t cycles)11*80166904SRaghavendra Rao Anantastatic inline void __delay(uint64_t cycles) 12*80166904SRaghavendra Rao Ananta { 13*80166904SRaghavendra Rao Ananta enum arch_timer timer = VIRTUAL; 14*80166904SRaghavendra Rao Ananta uint64_t start = timer_get_cntct(timer); 15*80166904SRaghavendra Rao Ananta 16*80166904SRaghavendra Rao Ananta while ((timer_get_cntct(timer) - start) < cycles) 17*80166904SRaghavendra Rao Ananta cpu_relax(); 18*80166904SRaghavendra Rao Ananta } 19*80166904SRaghavendra Rao Ananta udelay(unsigned long usec)20*80166904SRaghavendra Rao Anantastatic inline void udelay(unsigned long usec) 21*80166904SRaghavendra Rao Ananta { 22*80166904SRaghavendra Rao Ananta __delay(usec_to_cycles(usec)); 23*80166904SRaghavendra Rao Ananta } 24*80166904SRaghavendra Rao Ananta 25*80166904SRaghavendra Rao Ananta #endif /* SELFTEST_KVM_ARM_DELAY_H */ 26