xref: /kvm-unit-tests/lib/riscv/delay.c (revision a1418d6dbe810aded6885366cc6e782caa21a2cc)
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 
delay(uint64_t cycles)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 
udelay(unsigned long usecs)18 void udelay(unsigned long usecs)
19 {
20 	delay(usec_to_cycles((uint64_t)usecs));
21 }
22