xref: /kvm-unit-tests/lib/powerpc/asm/time.h (revision 8b10d4fadc42e83fabc47fbdbe66d83a1e8f1438)
1*8b10d4faSNicholas Piggin #ifndef _ASMPOWERPC_TIME_H_
2*8b10d4faSNicholas Piggin #define _ASMPOWERPC_TIME_H_
3*8b10d4faSNicholas Piggin 
4*8b10d4faSNicholas Piggin #include <libcflat.h>
5*8b10d4faSNicholas Piggin #include <asm/processor.h>
6*8b10d4faSNicholas Piggin 
7*8b10d4faSNicholas Piggin static inline uint64_t get_tb(void)
8*8b10d4faSNicholas Piggin {
9*8b10d4faSNicholas Piggin 	return mfspr(SPR_TB);
10*8b10d4faSNicholas Piggin }
11*8b10d4faSNicholas Piggin 
12*8b10d4faSNicholas Piggin extern uint64_t get_clock_us(void);
13*8b10d4faSNicholas Piggin extern uint64_t get_clock_ms(void);
14*8b10d4faSNicholas Piggin extern void delay(uint64_t cycles);
15*8b10d4faSNicholas Piggin extern void udelay(uint64_t us);
16*8b10d4faSNicholas Piggin extern void sleep_tb(uint64_t cycles);
17*8b10d4faSNicholas Piggin extern void usleep(uint64_t us);
18*8b10d4faSNicholas Piggin 
19*8b10d4faSNicholas Piggin static inline void mdelay(uint64_t ms)
20*8b10d4faSNicholas Piggin {
21*8b10d4faSNicholas Piggin 	while (ms--)
22*8b10d4faSNicholas Piggin 		udelay(1000);
23*8b10d4faSNicholas Piggin }
24*8b10d4faSNicholas Piggin 
25*8b10d4faSNicholas Piggin static inline void msleep(uint64_t ms)
26*8b10d4faSNicholas Piggin {
27*8b10d4faSNicholas Piggin 	usleep(ms * 1000);
28*8b10d4faSNicholas Piggin }
29*8b10d4faSNicholas Piggin 
30*8b10d4faSNicholas Piggin #endif /* _ASMPOWERPC_TIME_H_ */
31