xref: /openbmc/linux/arch/ia64/include/asm/native/inst.h (revision 234489ac)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /******************************************************************************
3  * arch/ia64/include/asm/native/inst.h
4  *
5  * Copyright (c) 2008 Isaku Yamahata <yamahata at valinux co jp>
6  *                    VA Linux Systems Japan K.K.
7  */
8 
9 #define DO_SAVE_MIN		IA64_NATIVE_DO_SAVE_MIN
10 
11 #define MOV_FROM_IFA(reg)	\
12 	mov reg = cr.ifa
13 
14 #define MOV_FROM_ITIR(reg)	\
15 	mov reg = cr.itir
16 
17 #define MOV_FROM_ISR(reg)	\
18 	mov reg = cr.isr
19 
20 #define MOV_FROM_IHA(reg)	\
21 	mov reg = cr.iha
22 
23 #define MOV_FROM_IPSR(pred, reg)	\
24 (pred)	mov reg = cr.ipsr
25 
26 #define MOV_FROM_IIM(reg)	\
27 	mov reg = cr.iim
28 
29 #define MOV_FROM_IIP(reg)	\
30 	mov reg = cr.iip
31 
32 #define MOV_FROM_IVR(reg, clob)	\
33 	mov reg = cr.ivr
34 
35 #define MOV_FROM_PSR(pred, reg, clob)	\
36 (pred)	mov reg = psr
37 
38 #define MOV_FROM_ITC(pred, pred_clob, reg, clob)	\
39 (pred)	mov reg = ar.itc
40 
41 #define MOV_TO_IFA(reg, clob)	\
42 	mov cr.ifa = reg
43 
44 #define MOV_TO_ITIR(pred, reg, clob)	\
45 (pred)	mov cr.itir = reg
46 
47 #define MOV_TO_IHA(pred, reg, clob)	\
48 (pred)	mov cr.iha = reg
49 
50 #define MOV_TO_IPSR(pred, reg, clob)		\
51 (pred)	mov cr.ipsr = reg
52 
53 #define MOV_TO_IFS(pred, reg, clob)	\
54 (pred)	mov cr.ifs = reg
55 
56 #define MOV_TO_IIP(reg, clob)	\
57 	mov cr.iip = reg
58 
59 #define MOV_TO_KR(kr, reg, clob0, clob1)	\
60 	mov IA64_KR(kr) = reg
61 
62 #define ITC_I(pred, reg, clob)	\
63 (pred)	itc.i reg
64 
65 #define ITC_D(pred, reg, clob)	\
66 (pred)	itc.d reg
67 
68 #define ITC_I_AND_D(pred_i, pred_d, reg, clob)	\
69 (pred_i) itc.i reg;				\
70 (pred_d) itc.d reg
71 
72 #define THASH(pred, reg0, reg1, clob)		\
73 (pred)	thash reg0 = reg1
74 
75 #define SSM_PSR_IC_AND_DEFAULT_BITS_AND_SRLZ_I(clob0, clob1)		\
76 	ssm psr.ic | PSR_DEFAULT_BITS					\
77 	;;								\
78 	srlz.i /* guarantee that interruption collectin is on */	\
79 	;;
80 
81 #define SSM_PSR_IC_AND_SRLZ_D(clob0, clob1)	\
82 	ssm psr.ic				\
83 	;;					\
84 	srlz.d
85 
86 #define RSM_PSR_IC(clob)	\
87 	rsm psr.ic
88 
89 #define SSM_PSR_I(pred, pred_clob, clob)	\
90 (pred)	ssm psr.i
91 
92 #define RSM_PSR_I(pred, clob0, clob1)	\
93 (pred)	rsm psr.i
94 
95 #define RSM_PSR_I_IC(clob0, clob1, clob2)	\
96 	rsm psr.i | psr.ic
97 
98 #define RSM_PSR_DT		\
99 	rsm psr.dt
100 
101 #define RSM_PSR_BE_I(clob0, clob1)	\
102 	rsm psr.be | psr.i
103 
104 #define SSM_PSR_DT_AND_SRLZ_I	\
105 	ssm psr.dt		\
106 	;;			\
107 	srlz.i
108 
109 #define BSW_0(clob0, clob1, clob2)	\
110 	bsw.0
111 
112 #define BSW_1(clob0, clob1)	\
113 	bsw.1
114 
115 #define COVER	\
116 	cover
117 
118 #define RFI	\
119 	rfi
120