00001 #include "def-helper.h"
00002
00003
00004 #undef HELPER
00005 #define HELPER(name) do_##name
00006
00007
00008 DEF_HELPER_2(raise_exception_err, void, i32, int)
00009 DEF_HELPER_1(raise_exception, void, i32)
00010 DEF_HELPER_0(interrupt_restart, void)
00011
00012 #ifdef TARGET_MIPS64
00013 DEF_HELPER_3(ldl, tl, tl, tl, int)
00014 DEF_HELPER_3(ldr, tl, tl, tl, int)
00015 DEF_HELPER_3(sdl, void, tl, tl, int)
00016 DEF_HELPER_3(sdr, void, tl, tl, int)
00017 #endif
00018 DEF_HELPER_3(lwl, tl, tl, tl, int)
00019 DEF_HELPER_3(lwr, tl, tl, tl, int)
00020 DEF_HELPER_3(swl, void, tl, tl, int)
00021 DEF_HELPER_3(swr, void, tl, tl, int)
00022
00023 DEF_HELPER_1(clo, tl, tl)
00024 DEF_HELPER_1(clz, tl, tl)
00025 #ifdef TARGET_MIPS64
00026 DEF_HELPER_1(dclo, tl, tl)
00027 DEF_HELPER_1(dclz, tl, tl)
00028 DEF_HELPER_2(dmult, void, tl, tl)
00029 DEF_HELPER_2(dmultu, void, tl, tl)
00030 #endif
00031
00032 DEF_HELPER_2(muls, tl, tl, tl)
00033 DEF_HELPER_2(mulsu, tl, tl, tl)
00034 DEF_HELPER_2(macc, tl, tl, tl)
00035 DEF_HELPER_2(maccu, tl, tl, tl)
00036 DEF_HELPER_2(msac, tl, tl, tl)
00037 DEF_HELPER_2(msacu, tl, tl, tl)
00038 DEF_HELPER_2(mulhi, tl, tl, tl)
00039 DEF_HELPER_2(mulhiu, tl, tl, tl)
00040 DEF_HELPER_2(mulshi, tl, tl, tl)
00041 DEF_HELPER_2(mulshiu, tl, tl, tl)
00042 DEF_HELPER_2(macchi, tl, tl, tl)
00043 DEF_HELPER_2(macchiu, tl, tl, tl)
00044 DEF_HELPER_2(msachi, tl, tl, tl)
00045 DEF_HELPER_2(msachiu, tl, tl, tl)
00046
00047 #ifndef CONFIG_USER_ONLY
00048
00049 DEF_HELPER_0(mfc0_mvpcontrol, tl)
00050 DEF_HELPER_0(mfc0_mvpconf0, tl)
00051 DEF_HELPER_0(mfc0_mvpconf1, tl)
00052 DEF_HELPER_0(mfc0_random, tl)
00053 DEF_HELPER_0(mfc0_tcstatus, tl)
00054 DEF_HELPER_0(mftc0_tcstatus, tl)
00055 DEF_HELPER_0(mfc0_tcbind, tl)
00056 DEF_HELPER_0(mftc0_tcbind, tl)
00057 DEF_HELPER_0(mfc0_tcrestart, tl)
00058 DEF_HELPER_0(mftc0_tcrestart, tl)
00059 DEF_HELPER_0(mfc0_tchalt, tl)
00060 DEF_HELPER_0(mftc0_tchalt, tl)
00061 DEF_HELPER_0(mfc0_tccontext, tl)
00062 DEF_HELPER_0(mftc0_tccontext, tl)
00063 DEF_HELPER_0(mfc0_tcschedule, tl)
00064 DEF_HELPER_0(mftc0_tcschedule, tl)
00065 DEF_HELPER_0(mfc0_tcschefback, tl)
00066 DEF_HELPER_0(mftc0_tcschefback, tl)
00067 DEF_HELPER_0(mfc0_count, tl)
00068 DEF_HELPER_0(mftc0_entryhi, tl)
00069 DEF_HELPER_0(mftc0_status, tl)
00070 DEF_HELPER_0(mfc0_lladdr, tl)
00071 DEF_HELPER_1(mfc0_watchlo, tl, i32)
00072 DEF_HELPER_1(mfc0_watchhi, tl, i32)
00073 DEF_HELPER_0(mfc0_debug, tl)
00074 DEF_HELPER_0(mftc0_debug, tl)
00075 #ifdef TARGET_MIPS64
00076 DEF_HELPER_0(dmfc0_tcrestart, tl)
00077 DEF_HELPER_0(dmfc0_tchalt, tl)
00078 DEF_HELPER_0(dmfc0_tccontext, tl)
00079 DEF_HELPER_0(dmfc0_tcschedule, tl)
00080 DEF_HELPER_0(dmfc0_tcschefback, tl)
00081 DEF_HELPER_0(dmfc0_lladdr, tl)
00082 DEF_HELPER_1(dmfc0_watchlo, tl, i32)
00083 #endif
00084
00085 DEF_HELPER_1(mtc0_index, void, tl)
00086 DEF_HELPER_1(mtc0_mvpcontrol, void, tl)
00087 DEF_HELPER_1(mtc0_vpecontrol, void, tl)
00088 DEF_HELPER_1(mtc0_vpeconf0, void, tl)
00089 DEF_HELPER_1(mtc0_vpeconf1, void, tl)
00090 DEF_HELPER_1(mtc0_yqmask, void, tl)
00091 DEF_HELPER_1(mtc0_vpeopt, void, tl)
00092 DEF_HELPER_1(mtc0_entrylo0, void, tl)
00093 DEF_HELPER_1(mtc0_tcstatus, void, tl)
00094 DEF_HELPER_1(mttc0_tcstatus, void, tl)
00095 DEF_HELPER_1(mtc0_tcbind, void, tl)
00096 DEF_HELPER_1(mttc0_tcbind, void, tl)
00097 DEF_HELPER_1(mtc0_tcrestart, void, tl)
00098 DEF_HELPER_1(mttc0_tcrestart, void, tl)
00099 DEF_HELPER_1(mtc0_tchalt, void, tl)
00100 DEF_HELPER_1(mttc0_tchalt, void, tl)
00101 DEF_HELPER_1(mtc0_tccontext, void, tl)
00102 DEF_HELPER_1(mttc0_tccontext, void, tl)
00103 DEF_HELPER_1(mtc0_tcschedule, void, tl)
00104 DEF_HELPER_1(mttc0_tcschedule, void, tl)
00105 DEF_HELPER_1(mtc0_tcschefback, void, tl)
00106 DEF_HELPER_1(mttc0_tcschefback, void, tl)
00107 DEF_HELPER_1(mtc0_entrylo1, void, tl)
00108 DEF_HELPER_1(mtc0_context, void, tl)
00109 DEF_HELPER_1(mtc0_pagemask, void, tl)
00110 DEF_HELPER_1(mtc0_pagegrain, void, tl)
00111 DEF_HELPER_1(mtc0_wired, void, tl)
00112 DEF_HELPER_1(mtc0_srsconf0, void, tl)
00113 DEF_HELPER_1(mtc0_srsconf1, void, tl)
00114 DEF_HELPER_1(mtc0_srsconf2, void, tl)
00115 DEF_HELPER_1(mtc0_srsconf3, void, tl)
00116 DEF_HELPER_1(mtc0_srsconf4, void, tl)
00117 DEF_HELPER_1(mtc0_hwrena, void, tl)
00118 DEF_HELPER_1(mtc0_count, void, tl)
00119 DEF_HELPER_1(mtc0_entryhi, void, tl)
00120 DEF_HELPER_1(mttc0_entryhi, void, tl)
00121 DEF_HELPER_1(mtc0_compare, void, tl)
00122 DEF_HELPER_1(mtc0_status, void, tl)
00123 DEF_HELPER_1(mttc0_status, void, tl)
00124 DEF_HELPER_1(mtc0_intctl, void, tl)
00125 DEF_HELPER_1(mtc0_srsctl, void, tl)
00126 DEF_HELPER_1(mtc0_cause, void, tl)
00127 DEF_HELPER_1(mtc0_ebase, void, tl)
00128 DEF_HELPER_1(mtc0_config0, void, tl)
00129 DEF_HELPER_1(mtc0_config2, void, tl)
00130 DEF_HELPER_2(mtc0_watchlo, void, tl, i32)
00131 DEF_HELPER_2(mtc0_watchhi, void, tl, i32)
00132 DEF_HELPER_1(mtc0_xcontext, void, tl)
00133 DEF_HELPER_1(mtc0_framemask, void, tl)
00134 DEF_HELPER_1(mtc0_debug, void, tl)
00135 DEF_HELPER_1(mttc0_debug, void, tl)
00136 DEF_HELPER_1(mtc0_performance0, void, tl)
00137 DEF_HELPER_1(mtc0_taglo, void, tl)
00138 DEF_HELPER_1(mtc0_datalo, void, tl)
00139 DEF_HELPER_1(mtc0_taghi, void, tl)
00140 DEF_HELPER_1(mtc0_datahi, void, tl)
00141
00142
00143 DEF_HELPER_1(mftgpr, tl, i32);
00144 DEF_HELPER_1(mftlo, tl, i32)
00145 DEF_HELPER_1(mfthi, tl, i32)
00146 DEF_HELPER_1(mftacx, tl, i32)
00147 DEF_HELPER_0(mftdsp, tl)
00148 DEF_HELPER_2(mttgpr, void, tl, i32)
00149 DEF_HELPER_2(mttlo, void, tl, i32)
00150 DEF_HELPER_2(mtthi, void, tl, i32)
00151 DEF_HELPER_2(mttacx, void, tl, i32)
00152 DEF_HELPER_1(mttdsp, void, tl)
00153 DEF_HELPER_1(dmt, tl, tl)
00154 DEF_HELPER_1(emt, tl, tl)
00155 DEF_HELPER_1(dvpe, tl, tl)
00156 DEF_HELPER_1(evpe, tl, tl)
00157 #endif
00158 DEF_HELPER_2(fork, void, tl, tl)
00159 DEF_HELPER_1(yield, tl, tl)
00160
00161
00162 DEF_HELPER_1(cfc1, tl, i32)
00163 DEF_HELPER_2(ctc1, void, tl, i32)
00164
00165 DEF_HELPER_1(float_cvtd_s, i64, i32)
00166 DEF_HELPER_1(float_cvtd_w, i64, i32)
00167 DEF_HELPER_1(float_cvtd_l, i64, i64)
00168 DEF_HELPER_1(float_cvtl_d, i64, i64)
00169 DEF_HELPER_1(float_cvtl_s, i64, i32)
00170 DEF_HELPER_1(float_cvtps_pw, i64, i64)
00171 DEF_HELPER_1(float_cvtpw_ps, i64, i64)
00172 DEF_HELPER_1(float_cvts_d, i32, i64)
00173 DEF_HELPER_1(float_cvts_w, i32, i32)
00174 DEF_HELPER_1(float_cvts_l, i32, i64)
00175 DEF_HELPER_1(float_cvts_pl, i32, i32)
00176 DEF_HELPER_1(float_cvts_pu, i32, i32)
00177 DEF_HELPER_1(float_cvtw_s, i32, i32)
00178 DEF_HELPER_1(float_cvtw_d, i32, i64)
00179
00180 DEF_HELPER_2(float_addr_ps, i64, i64, i64)
00181 DEF_HELPER_2(float_mulr_ps, i64, i64, i64)
00182
00183 #define FOP_PROTO(op) \
00184 DEF_HELPER_1(float_ ## op ## l_s, i64, i32) \
00185 DEF_HELPER_1(float_ ## op ## l_d, i64, i64) \
00186 DEF_HELPER_1(float_ ## op ## w_s, i32, i32) \
00187 DEF_HELPER_1(float_ ## op ## w_d, i32, i64)
00188 FOP_PROTO(round)
00189 FOP_PROTO(trunc)
00190 FOP_PROTO(ceil)
00191 FOP_PROTO(floor)
00192 #undef FOP_PROTO
00193
00194 #define FOP_PROTO(op) \
00195 DEF_HELPER_1(float_ ## op ## _s, i32, i32) \
00196 DEF_HELPER_1(float_ ## op ## _d, i64, i64)
00197 FOP_PROTO(sqrt)
00198 FOP_PROTO(rsqrt)
00199 FOP_PROTO(recip)
00200 #undef FOP_PROTO
00201
00202 #define FOP_PROTO(op) \
00203 DEF_HELPER_1(float_ ## op ## _s, i32, i32) \
00204 DEF_HELPER_1(float_ ## op ## _d, i64, i64) \
00205 DEF_HELPER_1(float_ ## op ## _ps, i64, i64)
00206 FOP_PROTO(abs)
00207 FOP_PROTO(chs)
00208 FOP_PROTO(recip1)
00209 FOP_PROTO(rsqrt1)
00210 #undef FOP_PROTO
00211
00212 #define FOP_PROTO(op) \
00213 DEF_HELPER_2(float_ ## op ## _s, i32, i32, i32) \
00214 DEF_HELPER_2(float_ ## op ## _d, i64, i64, i64) \
00215 DEF_HELPER_2(float_ ## op ## _ps, i64, i64, i64)
00216 FOP_PROTO(add)
00217 FOP_PROTO(sub)
00218 FOP_PROTO(mul)
00219 FOP_PROTO(div)
00220 FOP_PROTO(recip2)
00221 FOP_PROTO(rsqrt2)
00222 #undef FOP_PROTO
00223
00224 #define FOP_PROTO(op) \
00225 DEF_HELPER_3(float_ ## op ## _s, i32, i32, i32, i32) \
00226 DEF_HELPER_3(float_ ## op ## _d, i64, i64, i64, i64) \
00227 DEF_HELPER_3(float_ ## op ## _ps, i64, i64, i64, i64)
00228 FOP_PROTO(muladd)
00229 FOP_PROTO(mulsub)
00230 FOP_PROTO(nmuladd)
00231 FOP_PROTO(nmulsub)
00232 #undef FOP_PROTO
00233
00234 #define FOP_PROTO(op) \
00235 DEF_HELPER_3(cmp_d_ ## op, void, i64, i64, int) \
00236 DEF_HELPER_3(cmpabs_d_ ## op, void, i64, i64, int) \
00237 DEF_HELPER_3(cmp_s_ ## op, void, i32, i32, int) \
00238 DEF_HELPER_3(cmpabs_s_ ## op, void, i32, i32, int) \
00239 DEF_HELPER_3(cmp_ps_ ## op, void, i64, i64, int) \
00240 DEF_HELPER_3(cmpabs_ps_ ## op, void, i64, i64, int)
00241 FOP_PROTO(f)
00242 FOP_PROTO(un)
00243 FOP_PROTO(eq)
00244 FOP_PROTO(ueq)
00245 FOP_PROTO(olt)
00246 FOP_PROTO(ult)
00247 FOP_PROTO(ole)
00248 FOP_PROTO(ule)
00249 FOP_PROTO(sf)
00250 FOP_PROTO(ngle)
00251 FOP_PROTO(seq)
00252 FOP_PROTO(ngl)
00253 FOP_PROTO(lt)
00254 FOP_PROTO(nge)
00255 FOP_PROTO(le)
00256 FOP_PROTO(ngt)
00257 #undef FOP_PROTO
00258
00259
00260 #ifndef CONFIG_USER_ONLY
00261 DEF_HELPER_0(tlbwi, void)
00262 DEF_HELPER_0(tlbwr, void)
00263 DEF_HELPER_0(tlbp, void)
00264 DEF_HELPER_0(tlbr, void)
00265 DEF_HELPER_0(di, tl)
00266 DEF_HELPER_0(ei, tl)
00267 DEF_HELPER_0(eret, void)
00268 DEF_HELPER_0(deret, void)
00269 #endif
00270 DEF_HELPER_0(rdhwr_cpunum, tl)
00271 DEF_HELPER_0(rdhwr_synci_step, tl)
00272 DEF_HELPER_0(rdhwr_cc, tl)
00273 DEF_HELPER_0(rdhwr_ccres, tl)
00274 DEF_HELPER_1(pmon, void, int)
00275 DEF_HELPER_0(wait, void)
00276
00277 #include "def-helper.h"