xref: /kvm-unit-tests/lib/powerpc/asm/processor.h (revision f4d8d9396ff91f66732ebba1e24fb8937eafc49b)
16842bc34SLaurent Vivier #ifndef _ASMPOWERPC_PROCESSOR_H_
26842bc34SLaurent Vivier #define _ASMPOWERPC_PROCESSOR_H_
36842bc34SLaurent Vivier 
4*f4d8d939SSuraj Jitindar Singh #include <libcflat.h>
56842bc34SLaurent Vivier #include <asm/ptrace.h>
66842bc34SLaurent Vivier 
76842bc34SLaurent Vivier #ifndef __ASSEMBLY__
86842bc34SLaurent Vivier void handle_exception(int trap, void (*func)(struct pt_regs *, void *), void *);
96842bc34SLaurent Vivier void do_handle_exception(struct pt_regs *regs);
106842bc34SLaurent Vivier #endif /* __ASSEMBLY__ */
116842bc34SLaurent Vivier 
12*f4d8d939SSuraj Jitindar Singh static inline uint64_t get_tb(void)
13*f4d8d939SSuraj Jitindar Singh {
14*f4d8d939SSuraj Jitindar Singh 	uint64_t tb;
15*f4d8d939SSuraj Jitindar Singh 
16*f4d8d939SSuraj Jitindar Singh 	asm volatile ("mfspr %[tb],268" : [tb] "=r" (tb));
17*f4d8d939SSuraj Jitindar Singh 
18*f4d8d939SSuraj Jitindar Singh 	return tb;
19*f4d8d939SSuraj Jitindar Singh }
20*f4d8d939SSuraj Jitindar Singh 
21*f4d8d939SSuraj Jitindar Singh extern void delay(uint64_t cycles);
22*f4d8d939SSuraj Jitindar Singh extern void udelay(uint64_t us);
23*f4d8d939SSuraj Jitindar Singh 
24*f4d8d939SSuraj Jitindar Singh static inline void mdelay(uint64_t ms)
25*f4d8d939SSuraj Jitindar Singh {
26*f4d8d939SSuraj Jitindar Singh 	while (ms--)
27*f4d8d939SSuraj Jitindar Singh 		udelay(1000);
28*f4d8d939SSuraj Jitindar Singh }
29*f4d8d939SSuraj Jitindar Singh 
306842bc34SLaurent Vivier #endif /* _ASMPOWERPC_PROCESSOR_H_ */
31