xref: /kvm-unit-tests/lib/riscv/delay.c (revision 0cc3a351b925928827baa4b69cf0e46ff5837083)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (C) 2024, James Raphael Tiovalen <jamestiotio@gmail.com>
4  */
5 #include <libcflat.h>
6 #include <asm/barrier.h>
7 #include <asm/delay.h>
8 #include <asm/timer.h>
9 
10 void delay(uint64_t cycles)
11 {
12 	uint64_t start = timer_get_cycles();
13 
14 	while ((timer_get_cycles() - start) < cycles)
15 		cpu_relax();
16 }
17 
18 void udelay(unsigned long usecs)
19 {
20 	delay(usec_to_cycles((uint64_t)usecs));
21 }
22