delay.h 481 B

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