From patchwork Tue Apr 12 21:59:31 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aurelien Jarno X-Patchwork-Id: 90921 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 67940B6F57 for ; Wed, 13 Apr 2011 12:30:57 +1000 (EST) Received: from localhost ([::1]:38179 helo=lists2.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9pr4-00034J-OA for incoming@patchwork.ozlabs.org; Tue, 12 Apr 2011 22:30:54 -0400 Received: from eggs.gnu.org ([140.186.70.92]:34573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9p9f-0005Bc-In for qemu-devel@nongnu.org; Tue, 12 Apr 2011 21:46:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q9lcc-0007KA-Tm for qemu-devel@nongnu.org; Tue, 12 Apr 2011 17:59:44 -0400 Received: from hall.aurel32.net ([88.191.126.93]:49819) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q9lcc-0007J9-OZ for qemu-devel@nongnu.org; Tue, 12 Apr 2011 17:59:42 -0400 Received: from [2001:470:d4ed:0:5e26:aff:fe2b:6f5b] (helo=volta.aurel32.net) by hall.aurel32.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.72) (envelope-from ) id 1Q9lcb-00088v-VB; Tue, 12 Apr 2011 23:59:42 +0200 Received: from aurel32 by volta.aurel32.net with local (Exim 4.72) (envelope-from ) id 1Q9lca-0002aK-PL; Tue, 12 Apr 2011 23:59:40 +0200 From: Aurelien Jarno To: qemu-devel@nongnu.org Date: Tue, 12 Apr 2011 23:59:31 +0200 Message-Id: <1302645571-20500-20-git-send-email-aurelien@aurel32.net> X-Mailer: git-send-email 1.7.2.3 In-Reply-To: <1302645571-20500-1-git-send-email-aurelien@aurel32.net> References: <1302645571-20500-1-git-send-email-aurelien@aurel32.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 88.191.126.93 Cc: Aurelien Jarno Subject: [Qemu-devel] [PATCH 19/19] target-mips: don't hardcode softfloat exception bits X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Aurelien Jarno --- 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)