CRIS: Concistent use of btarget and make it possible to single-step over delayslots.
[qemu/qemu-JZ.git] / target-sparc / helper.h
blob4007ddfea0e585ce05e3e77f81a7adc4cd676865
1 #define TCG_HELPER_PROTO
3 #ifndef TARGET_SPARC64
4 void TCG_HELPER_PROTO helper_rett(void);
5 void TCG_HELPER_PROTO helper_wrpsr(target_ulong new_psr);
6 target_ulong TCG_HELPER_PROTO helper_rdpsr(void);
7 #else
8 void TCG_HELPER_PROTO helper_wrpstate(target_ulong new_state);
9 void TCG_HELPER_PROTO helper_done(void);
10 void TCG_HELPER_PROTO helper_retry(void);
11 void TCG_HELPER_PROTO helper_flushw(void);
12 void TCG_HELPER_PROTO helper_saved(void);
13 void TCG_HELPER_PROTO helper_restored(void);
14 target_ulong TCG_HELPER_PROTO helper_rdccr(void);
15 void TCG_HELPER_PROTO helper_wrccr(target_ulong new_ccr);
16 target_ulong TCG_HELPER_PROTO helper_rdcwp(void);
17 void TCG_HELPER_PROTO helper_wrcwp(target_ulong new_cwp);
18 target_ulong TCG_HELPER_PROTO helper_array8(target_ulong pixel_addr,
19 target_ulong cubesize);
20 target_ulong TCG_HELPER_PROTO helper_alignaddr(target_ulong addr,
21 target_ulong offset);
22 target_ulong TCG_HELPER_PROTO helper_popc(target_ulong val);
23 void TCG_HELPER_PROTO helper_ldf_asi(target_ulong addr, int asi, int size,
24 int rd);
25 void TCG_HELPER_PROTO helper_stf_asi(target_ulong addr, int asi, int size,
26 int rd);
27 target_ulong TCG_HELPER_PROTO
28 helper_cas_asi(target_ulong addr, target_ulong val1,
29 target_ulong val2, uint32_t asi);
30 target_ulong TCG_HELPER_PROTO
31 helper_casx_asi(target_ulong addr, target_ulong val1,
32 target_ulong val2, uint32_t asi);
33 void TCG_HELPER_PROTO helper_tick_set_count(void *opaque, uint64_t count);
34 uint64_t TCG_HELPER_PROTO helper_tick_get_count(void *opaque);
35 void TCG_HELPER_PROTO helper_tick_set_limit(void *opaque, uint64_t limit);
36 #endif
37 void TCG_HELPER_PROTO helper_trap(target_ulong nb_trap);
38 void TCG_HELPER_PROTO helper_trapcc(target_ulong nb_trap,
39 target_ulong do_trap);
40 void TCG_HELPER_PROTO helper_check_align(target_ulong addr, uint32_t align);
41 void TCG_HELPER_PROTO helper_debug(void);
42 void TCG_HELPER_PROTO helper_save(void);
43 void TCG_HELPER_PROTO helper_restore(void);
44 void TCG_HELPER_PROTO helper_flush(target_ulong addr);
45 target_ulong TCG_HELPER_PROTO helper_udiv(target_ulong a, target_ulong b);
46 target_ulong TCG_HELPER_PROTO helper_sdiv(target_ulong a, target_ulong b);
47 uint64_t TCG_HELPER_PROTO helper_pack64(target_ulong high, target_ulong low);
48 void TCG_HELPER_PROTO helper_std_i386(target_ulong addr, int mem_idx);
49 void TCG_HELPER_PROTO helper_stdf(target_ulong addr, int mem_idx);
50 void TCG_HELPER_PROTO helper_lddf(target_ulong addr, int mem_idx);
51 #if defined(CONFIG_USER_ONLY)
52 void TCG_HELPER_PROTO helper_ldqf(target_ulong addr);
53 void TCG_HELPER_PROTO helper_stqf(target_ulong addr);
54 #endif
55 uint64_t TCG_HELPER_PROTO helper_ld_asi(target_ulong addr, int asi,
56 int size, int sign);
57 void TCG_HELPER_PROTO helper_st_asi(target_ulong addr, uint64_t val, int asi,
58 int size);
59 void TCG_HELPER_PROTO helper_ldfsr(void);
60 void TCG_HELPER_PROTO helper_stfsr(void);
61 void TCG_HELPER_PROTO helper_check_ieee_exceptions(void);
62 void TCG_HELPER_PROTO helper_clear_float_exceptions(void);
63 void TCG_HELPER_PROTO helper_fabss(void);
64 void TCG_HELPER_PROTO helper_fsqrts(void);
65 void TCG_HELPER_PROTO helper_fsqrtd(void);
66 void TCG_HELPER_PROTO helper_fcmps(void);
67 void TCG_HELPER_PROTO helper_fcmpd(void);
68 void TCG_HELPER_PROTO helper_fcmpes(void);
69 void TCG_HELPER_PROTO helper_fcmped(void);
70 #if defined(CONFIG_USER_ONLY)
71 void TCG_HELPER_PROTO helper_fsqrtq(void);
72 void TCG_HELPER_PROTO helper_fcmpq(void);
73 void TCG_HELPER_PROTO helper_fcmpeq(void);
74 #endif
75 #ifdef TARGET_SPARC64
76 void TCG_HELPER_PROTO helper_fabsd(void);
77 void TCG_HELPER_PROTO helper_fcmps_fcc1(void);
78 void TCG_HELPER_PROTO helper_fcmpd_fcc1(void);
79 void TCG_HELPER_PROTO helper_fcmps_fcc2(void);
80 void TCG_HELPER_PROTO helper_fcmpd_fcc2(void);
81 void TCG_HELPER_PROTO helper_fcmps_fcc3(void);
82 void TCG_HELPER_PROTO helper_fcmpd_fcc3(void);
83 void TCG_HELPER_PROTO helper_fcmpes_fcc1(void);
84 void TCG_HELPER_PROTO helper_fcmped_fcc1(void);
85 void TCG_HELPER_PROTO helper_fcmpes_fcc2(void);
86 void TCG_HELPER_PROTO helper_fcmped_fcc2(void);
87 void TCG_HELPER_PROTO helper_fcmpes_fcc3(void);
88 void TCG_HELPER_PROTO helper_fcmped_fcc3(void);
89 #if defined(CONFIG_USER_ONLY)
90 void TCG_HELPER_PROTO helper_fabsq(void);
91 void TCG_HELPER_PROTO helper_fcmpq_fcc1(void);
92 void TCG_HELPER_PROTO helper_fcmpq_fcc2(void);
93 void TCG_HELPER_PROTO helper_fcmpq_fcc3(void);
94 void TCG_HELPER_PROTO helper_fcmpeq_fcc1(void);
95 void TCG_HELPER_PROTO helper_fcmpeq_fcc2(void);
96 void TCG_HELPER_PROTO helper_fcmpeq_fcc3(void);
97 #endif
98 #endif
99 void TCG_HELPER_PROTO raise_exception(int tt);
100 #define F_HELPER_0_0(name) void TCG_HELPER_PROTO helper_f ## name(void)
101 #if defined(CONFIG_USER_ONLY)
102 #define F_HELPER_SDQ_0_0(name) \
103 F_HELPER_0_0(name ## s); \
104 F_HELPER_0_0(name ## d); \
105 F_HELPER_0_0(name ## q)
106 #else
107 #define F_HELPER_SDQ_0_0(name) \
108 F_HELPER_0_0(name ## s); \
109 F_HELPER_0_0(name ## d);
110 #endif
112 F_HELPER_SDQ_0_0(add);
113 F_HELPER_SDQ_0_0(sub);
114 F_HELPER_SDQ_0_0(mul);
115 F_HELPER_SDQ_0_0(div);
117 F_HELPER_0_0(smuld);
118 F_HELPER_0_0(dmulq);
120 F_HELPER_SDQ_0_0(neg);
121 F_HELPER_SDQ_0_0(ito);
122 #ifdef TARGET_SPARC64
123 F_HELPER_SDQ_0_0(xto);
124 #endif
125 F_HELPER_0_0(dtos);
126 F_HELPER_0_0(stod);
127 #if defined(CONFIG_USER_ONLY)
128 F_HELPER_0_0(qtos);
129 F_HELPER_0_0(stoq);
130 F_HELPER_0_0(qtod);
131 F_HELPER_0_0(dtoq);
132 #endif
133 F_HELPER_0_0(stoi);
134 F_HELPER_0_0(dtoi);
135 #if defined(CONFIG_USER_ONLY)
136 F_HELPER_0_0(qtoi);
137 #endif
138 #ifdef TARGET_SPARC64
139 F_HELPER_0_0(stox);
140 F_HELPER_0_0(dtox);
141 #if defined(CONFIG_USER_ONLY)
142 F_HELPER_0_0(qtox);
143 #endif
144 F_HELPER_0_0(aligndata);
145 void TCG_HELPER_PROTO helper_movl_FT0_0(void);
146 void TCG_HELPER_PROTO helper_movl_DT0_0(void);
147 void TCG_HELPER_PROTO helper_movl_FT0_1(void);
148 void TCG_HELPER_PROTO helper_movl_DT0_1(void);
149 F_HELPER_0_0(not);
150 F_HELPER_0_0(nots);
151 F_HELPER_0_0(nor);
152 F_HELPER_0_0(nors);
153 F_HELPER_0_0(or);
154 F_HELPER_0_0(ors);
155 F_HELPER_0_0(xor);
156 F_HELPER_0_0(xors);
157 F_HELPER_0_0(and);
158 F_HELPER_0_0(ands);
159 F_HELPER_0_0(ornot);
160 F_HELPER_0_0(ornots);
161 F_HELPER_0_0(andnot);
162 F_HELPER_0_0(andnots);
163 F_HELPER_0_0(nand);
164 F_HELPER_0_0(nands);
165 F_HELPER_0_0(xnor);
166 F_HELPER_0_0(xnors);
167 F_HELPER_0_0(pmerge);
168 F_HELPER_0_0(mul8x16);
169 F_HELPER_0_0(mul8x16al);
170 F_HELPER_0_0(mul8x16au);
171 F_HELPER_0_0(mul8sux16);
172 F_HELPER_0_0(mul8ulx16);
173 F_HELPER_0_0(muld8sux16);
174 F_HELPER_0_0(muld8ulx16);
175 F_HELPER_0_0(expand);
176 #define VIS_HELPER(name) \
177 F_HELPER_0_0(name##16); \
178 F_HELPER_0_0(name##16s); \
179 F_HELPER_0_0(name##32); \
180 F_HELPER_0_0(name##32s)
182 VIS_HELPER(padd);
183 VIS_HELPER(psub);
184 #define VIS_CMPHELPER(name) \
185 F_HELPER_0_0(name##16); \
186 F_HELPER_0_0(name##32)
187 VIS_CMPHELPER(cmpgt);
188 VIS_CMPHELPER(cmpeq);
189 VIS_CMPHELPER(cmple);
190 VIS_CMPHELPER(cmpne);
191 #endif
192 #undef F_HELPER_0_0
193 #undef F_HELPER_SDQ_0_0
194 #undef VIS_HELPER
195 #undef VIS_CMPHELPER