/* | |
* Delay loops | |
* | |
* Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> | |
* | |
* This work is licensed under the terms of the GNU LGPL, version 2. | |
*/ | |
#include <libcflat.h> | |
#include <asm/processor.h> | |
#include <asm/barrier.h> | |
#include <asm/delay.h> | |
void delay(u64 cycles) | |
{ | |
u64 start = get_cntvct(); | |
while ((get_cntvct() - start) < cycles) | |
cpu_relax(); | |
} | |
void udelay(unsigned long usec) | |
{ | |
delay((u64)usec * get_cntfrq() / 1000000); | |
} | |
void mdelay(unsigned long msecs) | |
{ | |
while (msecs--) | |
udelay(1000); | |
} |