From patchwork Wed Apr 7 17:51:13 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aurelien Jarno X-Patchwork-Id: 49620 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id E4BF4B7D16 for ; Thu, 8 Apr 2010 04:07:21 +1000 (EST) Received: from localhost ([127.0.0.1]:57404 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NzZcN-0001Qk-03 for incoming@patchwork.ozlabs.org; Wed, 07 Apr 2010 14:04:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NzZQG-0006Al-3I for qemu-devel@nongnu.org; Wed, 07 Apr 2010 13:52:16 -0400 Received: from [140.186.70.92] (port=55364 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NzZPy-00062X-3z for qemu-devel@nongnu.org; Wed, 07 Apr 2010 13:52:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NzZPi-0007JW-Nu for qemu-devel@nongnu.org; Wed, 07 Apr 2010 13:51:57 -0400 Received: from hall.aurel32.net ([88.191.82.174]:45316) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NzZPh-0007In-SM for qemu-devel@nongnu.org; Wed, 07 Apr 2010 13:51:42 -0400 Received: from [2a01:e35:2e80:2fb0:21e:8cff:feb0:693b] (helo=volta.aurel32.net) by hall.aurel32.net with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.69) (envelope-from ) id 1NzZPg-00011Q-Uk; Wed, 07 Apr 2010 19:51:41 +0200 Received: from aurel32 by volta.aurel32.net with local (Exim 4.71) (envelope-from ) id 1NzZPb-0001xp-UK; Wed, 07 Apr 2010 19:51:35 +0200 From: Aurelien Jarno To: qemu-devel@nongnu.org Date: Wed, 7 Apr 2010 19:51:13 +0200 Message-Id: <1270662685-7379-7-git-send-email-aurelien@aurel32.net> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1270662685-7379-1-git-send-email-aurelien@aurel32.net> References: <1270662685-7379-1-git-send-email-aurelien@aurel32.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) Cc: Andrzej Zaborowski , Aurelien Jarno Subject: [Qemu-devel] [PATCH 06/18] tcg/arm: add defines for the allowed instructions set X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Use a set of #define to define the allowed ARM instructions, depending on the __ARM_ARCH_*__ GCC defines. Signed-off-by: Aurelien Jarno --- tcg/arm/tcg-target.c | 27 ++++++++++++++++++++++++--- 1 files changed, 24 insertions(+), 3 deletions(-) diff --git a/tcg/arm/tcg-target.c b/tcg/arm/tcg-target.c index ee5f723..cae6385 100644 --- a/tcg/arm/tcg-target.c +++ b/tcg/arm/tcg-target.c @@ -22,6 +22,27 @@ * THE SOFTWARE. */ +#if defined(__ARM_ARCH_5T__) || \ + defined(__ARM_ARCH_5TE__) || \ + defined(__ARM_ARCH_5TEJ__) || \ + defined(__ARM_ARCH_6__) || \ + defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define USE_ARMV5_INSTRUCTIONS 1 +#endif + +#if defined(__ARM_ARCH_6__) || \ + defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define USE_ARMV6_INSTRUCTIONS 1 +#endif + +#if defined(__ARM_ARCH_7A__) || \ + defined(__ARM_ARCH_7__) +# define USE_ARMV7_INSTRUCTIONS 1 +#endif + + #ifndef NDEBUG static const char * const tcg_target_reg_names[TCG_TARGET_NB_REGS] = { "%r0", @@ -361,7 +382,7 @@ static inline void tcg_out_movi32(TCGContext *s, tcg_out_dat_imm(s, cond, ARITH_ADD, rd, 15, offset) : tcg_out_dat_imm(s, cond, ARITH_SUB, rd, 15, -offset); -#ifdef __ARM_ARCH_7A__ +#ifdef USE_ARMV7_INSTRUCTIONS /* use movw/movt */ /* movw */ tcg_out32(s, (cond << 28) | 0x03000000 | (rd << 12) @@ -1433,7 +1454,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, break; case INDEX_op_ext8s_i32: -#ifdef __ARM_ARCH_7A__ +#ifdef USE_ARMV7_INSTRUCTIONS /* sxtb */ tcg_out32(s, 0xe6af0070 | (args[0] << 12) | args[1]); #else @@ -1444,7 +1465,7 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc, #endif break; case INDEX_op_ext16s_i32: -#ifdef __ARM_ARCH_7A__ +#ifdef USE_ARMV7_INSTRUCTIONS /* sxth */ tcg_out32(s, 0xe6bf0070 | (args[0] << 12) | args[1]); #else