Loading...
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __UM_DELAY_H
3#define __UM_DELAY_H
4#include <asm-generic/delay.h>
5#include <linux/time-internal.h>
6
7static inline void um_ndelay(unsigned long nsecs)
8{
9 if (time_travel_mode == TT_MODE_INFCPU ||
10 time_travel_mode == TT_MODE_EXTERNAL) {
11 time_travel_ndelay(nsecs);
12 return;
13 }
14 ndelay(nsecs);
15}
16#undef ndelay
17#define ndelay um_ndelay
18
19static inline void um_udelay(unsigned long usecs)
20{
21 if (time_travel_mode == TT_MODE_INFCPU ||
22 time_travel_mode == TT_MODE_EXTERNAL) {
23 time_travel_ndelay(1000 * usecs);
24 return;
25 }
26 udelay(usecs);
27}
28#undef udelay
29#define udelay um_udelay
30#endif /* __UM_DELAY_H */
1#ifndef __UM_DELAY_H
2#define __UM_DELAY_H
3
4/* Undefined on purpose */
5extern void __bad_udelay(void);
6extern void __bad_ndelay(void);
7
8extern void __udelay(unsigned long usecs);
9extern void __ndelay(unsigned long usecs);
10extern void __delay(unsigned long loops);
11
12#define udelay(n) ((__builtin_constant_p(n) && (n) > 20000) ? \
13 __bad_udelay() : __udelay(n))
14
15#define ndelay(n) ((__builtin_constant_p(n) && (n) > 20000) ? \
16 __bad_ndelay() : __ndelay(n))
17
18#endif