diff options
author | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-05-18 11:55:54 +0000 |
---|---|---|
committer | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-05-18 11:55:54 +0000 |
commit | fd4a04ebb220b1ada72275297fc12cb85e89bbfb (patch) | |
tree | dd328471d4edb0b260bd2c0f8d85142465fcd365 /target-mips/exec.h | |
parent | 34ae7b51f54a5d58d30e31a92f8ece02973de50b (diff) |
- 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.h | 71 |
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__) */ |