[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 17/19] target-mips: don't hardcode softfloat exce
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH v2 17/19] target-mips: don't hardcode softfloat exception bits |
Date: |
Thu, 14 Apr 2011 01:11:12 +0200 |
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Aurelien Jarno <address@hidden>
---
target-mips/op_helper.c | 35 ++++++++++++++++++++---------------
1 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index abcb6eb..0a62361 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -2077,22 +2077,27 @@ void helper_ctc1 (target_ulong arg1, uint32_t reg)
helper_raise_exception(EXCP_FPE);
}
-static inline char ieee_ex_to_mips(char xcpt)
+static inline int ieee_ex_to_mips(int xcpt)
{
- return (xcpt & float_flag_inexact) >> 5 |
- (xcpt & float_flag_underflow) >> 3 |
- (xcpt & float_flag_overflow) >> 1 |
- (xcpt & float_flag_divbyzero) << 1 |
- (xcpt & float_flag_invalid) << 4;
-}
-
-static inline char mips_ex_to_ieee(char xcpt)
-{
- return (xcpt & FP_INEXACT) << 5 |
- (xcpt & FP_UNDERFLOW) << 3 |
- (xcpt & FP_OVERFLOW) << 1 |
- (xcpt & FP_DIV0) >> 1 |
- (xcpt & FP_INVALID) >> 4;
+ int ret = 0;
+ if (xcpt) {
+ if (xcpt & float_flag_invalid) {
+ ret |= FP_INVALID;
+ }
+ if (xcpt & float_flag_overflow) {
+ ret |= FP_OVERFLOW;
+ }
+ if (xcpt & float_flag_underflow) {
+ ret |= FP_UNDERFLOW;
+ }
+ if (xcpt & float_flag_divbyzero) {
+ ret |= FP_DIV0;
+ }
+ if (xcpt & float_flag_inexact) {
+ ret |= FP_INEXACT;
+ }
+ }
+ return ret;
}
static inline void update_fcr31(void)
--
1.7.2.3
- [Qemu-devel] [PATCH v2 04/19] target-i386: use float unions from cpu-all.h, (continued)
- [Qemu-devel] [PATCH v2 04/19] target-i386: use float unions from cpu-all.h, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 05/19] target-i386: add floatx_{add, mul, sub} and use them, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 07/19] softfloat-native: add float*_unordered_quiet() functions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 13/19] softfloat: move float*_eq and float*_eq_quiet, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 08/19] target-alpha: use new float64_unordered_quiet() function, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 01/19] softfloat: use GCC builtins to count the leading zeros, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 03/19] target-i386: use CPU_LDoubleU instead of a private union, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 10/19] target-i386: fix CMPUNORDPS/D and CMPORDPS/D instructions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 19/19] target-mips: clear softfpu exception state for comparison instructions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 17/19] target-mips: don't hardcode softfloat exception bits,
Aurelien Jarno <=
- [Qemu-devel] [PATCH v2 14/19] softfloat: improve description of comparison functions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 18/19] target-mips: fix c.ps.* instructions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 06/19] softfloat: add float*_unordered_{, quiet}() functions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 09/19] target-mips: use new float*_unordered*() functions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 12/19] softfloat: rename float*_eq_signaling() into float*_eq(), Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 15/19] target-ppc: fix SPE comparison functions, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 02/19] cpu-all.h: define CPU_LDoubleU, Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 11/19] softfloat: rename float*_eq() into float*_eq_quiet(), Aurelien Jarno, 2011/04/13
- [Qemu-devel] [PATCH v2 16/19] target-mips: simplify FP comparisons, Aurelien Jarno, 2011/04/13