xref: /OK3568_Linux_fs/kernel/arch/powerpc/boot/reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun #ifndef _PPC_BOOT_REG_H
3*4882a593Smuzhiyun #define _PPC_BOOT_REG_H
4*4882a593Smuzhiyun /*
5*4882a593Smuzhiyun  * Copyright 2007 Davud Gibson, IBM Corporation.
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
mfpvr(void)8*4882a593Smuzhiyun static inline u32 mfpvr(void)
9*4882a593Smuzhiyun {
10*4882a593Smuzhiyun 	u32 pvr;
11*4882a593Smuzhiyun 	asm volatile ("mfpvr	%0" : "=r"(pvr));
12*4882a593Smuzhiyun 	return pvr;
13*4882a593Smuzhiyun }
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define __stringify_1(x)	#x
16*4882a593Smuzhiyun #define __stringify(x)		__stringify_1(x)
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define mfspr(rn)	({unsigned long rval; \
19*4882a593Smuzhiyun 			asm volatile("mfspr %0," __stringify(rn) \
20*4882a593Smuzhiyun 				: "=r" (rval)); rval; })
21*4882a593Smuzhiyun #define mtspr(rn, v)	asm volatile("mtspr " __stringify(rn) ",%0" : : "r" (v))
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun register void *__stack_pointer asm("r1");
24*4882a593Smuzhiyun #define get_sp()	(__stack_pointer)
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #endif	/* _PPC_BOOT_REG_H */
27