xref: /kvm-unit-tests/lib/powerpc/asm/processor.h (revision a8a78d758b16d4e1869aae600ee074dfd1a64135)
1 #ifndef _ASMPOWERPC_PROCESSOR_H_
2 #define _ASMPOWERPC_PROCESSOR_H_
3 
4 #include <libcflat.h>
5 #include <asm/ptrace.h>
6 #include <asm/reg.h>
7 
8 #ifndef __ASSEMBLY__
9 void handle_exception(int trap, void (*func)(struct pt_regs *, void *), void *);
10 void do_handle_exception(struct pt_regs *regs);
11 #endif /* __ASSEMBLY__ */
12 
13 static inline uint64_t mfspr(int nr)
14 {
15 	uint64_t ret;
16 
17 	asm volatile("mfspr %0,%1" : "=r"(ret) : "i"(nr) : "memory");
18 
19 	return ret;
20 }
21 
22 static inline void mtspr(int nr, uint64_t val)
23 {
24 	asm volatile("mtspr %0,%1" : : "i"(nr), "r"(val) : "memory");
25 }
26 
27 static inline uint64_t mfmsr(void)
28 {
29 	uint64_t msr;
30 
31 	asm volatile ("mfmsr %[msr]" : [msr] "=r" (msr) :: "memory");
32 
33 	return msr;
34 }
35 
36 static inline void mtmsr(uint64_t msr)
37 {
38 	asm volatile ("mtmsrd %[msr]" :: [msr] "r" (msr) : "memory");
39 }
40 
41 #endif /* _ASMPOWERPC_PROCESSOR_H_ */
42