summaryrefslogtreecommitdiff
path: root/target-mips/exec.h
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-05-18 11:55:54 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-05-18 11:55:54 +0000
commitfd4a04ebb220b1ada72275297fc12cb85e89bbfb (patch)
treedd328471d4edb0b260bd2c0f8d85142465fcd365 /target-mips/exec.h
parent34ae7b51f54a5d58d30e31a92f8ece02973de50b (diff)
downloadqemu-fd4a04ebb220b1ada72275297fc12cb85e89bbfb.tar.gz
- Move FPU exception handling into helper functions, since they are big.
- Fix FP-conditional branches. - Check FPU register mode at runtime, not translation time, as the F64 status bit can change. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2828 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-mips/exec.h')
-rw-r--r--target-mips/exec.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/target-mips/exec.h b/target-mips/exec.h
index e82b71651b..7ebfd78e71 100644
--- a/target-mips/exec.h
+++ b/target-mips/exec.h
@@ -165,4 +165,75 @@ void cpu_mips_update_irq (CPUState *env);
void cpu_mips_clock_init (CPUState *env);
void cpu_mips_tlb_flush (CPUState *env, int flush_global);
+void do_ctc1 (void);
+void do_float_cvtd_s(void);
+void do_float_cvtd_w(void);
+void do_float_cvtd_l(void);
+void do_float_cvtl_d(void);
+void do_float_cvtl_s(void);
+void do_float_cvtps_pw(void);
+void do_float_cvtpw_ps(void);
+void do_float_cvts_d(void);
+void do_float_cvts_w(void);
+void do_float_cvts_l(void);
+void do_float_cvts_pl(void);
+void do_float_cvts_pu(void);
+void do_float_cvtw_s(void);
+void do_float_cvtw_d(void);
+void do_float_roundl_d(void);
+void do_float_roundl_s(void);
+void do_float_roundw_d(void);
+void do_float_roundw_s(void);
+void do_float_truncl_d(void);
+void do_float_truncl_s(void);
+void do_float_truncw_d(void);
+void do_float_truncw_s(void);
+void do_float_ceill_d(void);
+void do_float_ceill_s(void);
+void do_float_ceilw_d(void);
+void do_float_ceilw_s(void);
+void do_float_floorl_d(void);
+void do_float_floorl_s(void);
+void do_float_floorw_d(void);
+void do_float_floorw_s(void);
+void do_float_add_d(void);
+void do_float_add_s(void);
+void do_float_add_ps(void);
+void do_float_sub_d(void);
+void do_float_sub_s(void);
+void do_float_sub_ps(void);
+void do_float_mul_d(void);
+void do_float_mul_s(void);
+void do_float_mul_ps(void);
+void do_float_div_d(void);
+void do_float_div_s(void);
+void do_float_div_ps(void);
+void do_float_addr_ps(void);
+
+#define CMP_OPS(op) \
+void do_cmp_d_ ## op(long cc); \
+void do_cmpabs_d_ ## op(long cc); \
+void do_cmp_s_ ## op(long cc); \
+void do_cmpabs_s_ ## op(long cc); \
+void do_cmp_ps_ ## op(long cc); \
+void do_cmpabs_ps_ ## op(long cc);
+
+CMP_OPS(f)
+CMP_OPS(un)
+CMP_OPS(eq)
+CMP_OPS(ueq)
+CMP_OPS(olt)
+CMP_OPS(ult)
+CMP_OPS(ole)
+CMP_OPS(ule)
+CMP_OPS(sf)
+CMP_OPS(ngle)
+CMP_OPS(seq)
+CMP_OPS(ngl)
+CMP_OPS(lt)
+CMP_OPS(nge)
+CMP_OPS(le)
+CMP_OPS(ngt)
+#undef CMP_OPS
+
#endif /* !defined(__QEMU_MIPS_EXEC_H__) */