converted INTO/CMPXCHG8B to TCG
[qemu] / target-i386 / helper.h
1 #define TCG_HELPER_PROTO
2
3 void helper_lock(void);
4 void helper_unlock(void);
5 void helper_divb_AL(target_ulong t0);
6 void helper_idivb_AL(target_ulong t0);
7 void helper_divw_AX(target_ulong t0);
8 void helper_idivw_AX(target_ulong t0);
9 void helper_divl_EAX(target_ulong t0);
10 void helper_idivl_EAX(target_ulong t0);
11 #ifdef TARGET_X86_64
12 void helper_mulq_EAX_T0(target_ulong t0);
13 void helper_imulq_EAX_T0(target_ulong t0);
14 target_ulong helper_imulq_T0_T1(target_ulong t0, target_ulong t1);
15 void helper_divq_EAX(target_ulong t0);
16 void helper_idivq_EAX(target_ulong t0);
17 #endif
18
19 void helper_aam(int base);
20 void helper_aad(int base);
21 void helper_aaa(void);
22 void helper_aas(void);
23 void helper_daa(void);
24 void helper_das(void);
25
26 uint32_t helper_lsl(uint32_t selector);
27 uint32_t helper_lar(uint32_t selector);
28 void helper_verr(uint32_t selector);
29 void helper_verw(uint32_t selector);
30 void helper_lldt(int selector);
31 void helper_ltr(int selector);
32 void helper_load_seg(int seg_reg, int selector);
33 void helper_ljmp_protected(int new_cs, target_ulong new_eip,
34                            int next_eip_addend);
35 void helper_lcall_real(int new_cs, target_ulong new_eip1,
36                        int shift, int next_eip);
37 void helper_lcall_protected(int new_cs, target_ulong new_eip, 
38                             int shift, int next_eip_addend);
39 void helper_iret_real(int shift);
40 void helper_iret_protected(int shift, int next_eip);
41 void helper_lret_protected(int shift, int addend);
42 void helper_movl_crN_T0(int reg, target_ulong t0);
43 void helper_lmsw(target_ulong t0);
44 void helper_clts(void);
45 #if !defined(CONFIG_USER_ONLY)
46 target_ulong helper_movtl_T0_cr8(void);
47 #endif
48 void helper_movl_drN_T0(int reg, target_ulong t0);
49 void helper_invlpg(target_ulong addr);
50
51 void helper_enter_level(int level, int data32, target_ulong t1);
52 #ifdef TARGET_X86_64
53 void helper_enter64_level(int level, int data64, target_ulong t1);
54 #endif
55 void helper_sysenter(void);
56 void helper_sysexit(void);
57 #ifdef TARGET_X86_64
58 void helper_syscall(int next_eip_addend);
59 void helper_sysret(int dflag);
60 #endif
61 void helper_hlt(void);
62 void helper_monitor(target_ulong ptr);
63 void helper_mwait(void);
64 void helper_debug(void);
65 void helper_raise_interrupt(int intno, int next_eip_addend);
66 void helper_raise_exception(int exception_index);
67 void helper_cli(void);
68 void helper_sti(void);
69 void helper_set_inhibit_irq(void);
70 void helper_reset_inhibit_irq(void);
71 void helper_boundw(target_ulong a0, int v);
72 void helper_boundl(target_ulong a0, int v);
73 void helper_rsm(void);
74 void helper_into(int next_eip_addend);
75 void helper_cmpxchg8b(target_ulong a0);
76 void helper_single_step(void);
77 void helper_cpuid(void);
78 void helper_rdtsc(void);
79 void helper_rdpmc(void);
80 void helper_rdmsr(void);
81 void helper_wrmsr(void);
82
83 void helper_check_iob(uint32_t t0);
84 void helper_check_iow(uint32_t t0);
85 void helper_check_iol(uint32_t t0);
86 void helper_outb(uint32_t port, uint32_t data);
87 target_ulong helper_inb(uint32_t port);
88 void helper_outw(uint32_t port, uint32_t data);
89 target_ulong helper_inw(uint32_t port);
90 void helper_outl(uint32_t port, uint32_t data);
91 target_ulong helper_inl(uint32_t port);
92
93 void helper_svm_check_intercept_param(uint32_t type, uint64_t param);
94 void helper_vmexit(uint32_t exit_code, uint64_t exit_info_1);
95 void helper_svm_check_io(uint32_t port, uint32_t param, 
96                          uint32_t next_eip_addend);
97 void helper_vmrun(void);
98 void helper_vmmcall(void);
99 void helper_vmload(void);
100 void helper_vmsave(void);
101 void helper_stgi(void);
102 void helper_clgi(void);
103 void helper_skinit(void);
104 void helper_invlpga(void);
105
106 /* x86 FPU */
107
108 void helper_flds_FT0(uint32_t val);
109 void helper_fldl_FT0(uint64_t val);
110 void helper_fildl_FT0(int32_t val);
111 void helper_flds_ST0(uint32_t val);
112 void helper_fldl_ST0(uint64_t val);
113 void helper_fildl_ST0(int32_t val);
114 void helper_fildll_ST0(int64_t val);
115 uint32_t helper_fsts_ST0(void);
116 uint64_t helper_fstl_ST0(void);
117 int32_t helper_fist_ST0(void);
118 int32_t helper_fistl_ST0(void);
119 int64_t helper_fistll_ST0(void);
120 int32_t helper_fistt_ST0(void);
121 int32_t helper_fisttl_ST0(void);
122 int64_t helper_fisttll_ST0(void);
123 void helper_fldt_ST0(target_ulong ptr);
124 void helper_fstt_ST0(target_ulong ptr);
125 void helper_fpush(void);
126 void helper_fpop(void);
127 void helper_fdecstp(void);
128 void helper_fincstp(void);
129 void helper_ffree_STN(int st_index);
130 void helper_fmov_ST0_FT0(void);
131 void helper_fmov_FT0_STN(int st_index);
132 void helper_fmov_ST0_STN(int st_index);
133 void helper_fmov_STN_ST0(int st_index);
134 void helper_fxchg_ST0_STN(int st_index);
135 void helper_fcom_ST0_FT0(void);
136 void helper_fucom_ST0_FT0(void);
137 void helper_fcomi_ST0_FT0(void);
138 void helper_fucomi_ST0_FT0(void);
139 void helper_fadd_ST0_FT0(void);
140 void helper_fmul_ST0_FT0(void);
141 void helper_fsub_ST0_FT0(void);
142 void helper_fsubr_ST0_FT0(void);
143 void helper_fdiv_ST0_FT0(void);
144 void helper_fdivr_ST0_FT0(void);
145 void helper_fadd_STN_ST0(int st_index);
146 void helper_fmul_STN_ST0(int st_index);
147 void helper_fsub_STN_ST0(int st_index);
148 void helper_fsubr_STN_ST0(int st_index);
149 void helper_fdiv_STN_ST0(int st_index);
150 void helper_fdivr_STN_ST0(int st_index);
151 void helper_fchs_ST0(void);
152 void helper_fabs_ST0(void);
153 void helper_fxam_ST0(void);
154 void helper_fld1_ST0(void);
155 void helper_fldl2t_ST0(void);
156 void helper_fldl2e_ST0(void);
157 void helper_fldpi_ST0(void);
158 void helper_fldlg2_ST0(void);
159 void helper_fldln2_ST0(void);
160 void helper_fldz_ST0(void);
161 void helper_fldz_FT0(void);
162 uint32_t helper_fnstsw(void);
163 uint32_t helper_fnstcw(void);
164 void helper_fldcw(uint32_t val);
165 void helper_fclex(void);
166 void helper_fwait(void);
167 void helper_fninit(void);
168 void helper_fbld_ST0(target_ulong ptr);
169 void helper_fbst_ST0(target_ulong ptr);
170 void helper_f2xm1(void);
171 void helper_fyl2x(void);
172 void helper_fptan(void);
173 void helper_fpatan(void);
174 void helper_fxtract(void);
175 void helper_fprem1(void);
176 void helper_fprem(void);
177 void helper_fyl2xp1(void);
178 void helper_fsqrt(void);
179 void helper_fsincos(void);
180 void helper_frndint(void);
181 void helper_fscale(void);
182 void helper_fsin(void);
183 void helper_fcos(void);
184 void helper_fxam_ST0(void);
185 void helper_fstenv(target_ulong ptr, int data32);
186 void helper_fldenv(target_ulong ptr, int data32);
187 void helper_fsave(target_ulong ptr, int data32);
188 void helper_frstor(target_ulong ptr, int data32);
189 void helper_fxsave(target_ulong ptr, int data64);
190 void helper_fxrstor(target_ulong ptr, int data64);
191 target_ulong helper_bsf(target_ulong t0);
192 target_ulong helper_bsr(target_ulong t0);
193
194 /* MMX/SSE */
195
196 void TCG_HELPER_PROTO helper_enter_mmx(void);
197 void TCG_HELPER_PROTO helper_emms(void);
198 void TCG_HELPER_PROTO helper_movq(uint64_t *d, uint64_t *s);
199
200 #define SHIFT 0
201 #include "ops_sse_header.h"
202 #define SHIFT 1
203 #include "ops_sse_header.h"
204
205 target_ulong helper_rclb(target_ulong t0, target_ulong t1);
206 target_ulong helper_rclw(target_ulong t0, target_ulong t1);
207 target_ulong helper_rcll(target_ulong t0, target_ulong t1);
208 target_ulong helper_rcrb(target_ulong t0, target_ulong t1);
209 target_ulong helper_rcrw(target_ulong t0, target_ulong t1);
210 target_ulong helper_rcrl(target_ulong t0, target_ulong t1);
211 #ifdef TARGET_X86_64
212 target_ulong helper_rclq(target_ulong t0, target_ulong t1);
213 target_ulong helper_rcrq(target_ulong t0, target_ulong t1);
214 #endif
215