From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26951 invoked by alias); 1 Mar 2013 17:36:20 -0000 Received: (qmail 26339 invoked by uid 22791); 1 Mar 2013 17:36:02 -0000 X-SWARE-Spam-Status: No, hits=-4.6 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KAM_STOCKGEN,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_BL X-Spam-Check-By: sourceware.org Received: from mail-pa0-f52.google.com (HELO mail-pa0-f52.google.com) (209.85.220.52) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 01 Mar 2013 17:35:47 +0000 Received: by mail-pa0-f52.google.com with SMTP id fb1so1942223pad.11 for ; Fri, 01 Mar 2013 09:35:46 -0800 (PST) X-Received: by 10.68.28.194 with SMTP id d2mr15255334pbh.215.1362159346581; Fri, 01 Mar 2013 09:35:46 -0800 (PST) Received: from fremont.twiddle.net (50-194-63-110-static.hfc.comcastbusiness.net. [50.194.63.110]) by mx.google.com with ESMTPS id kl4sm12679430pbc.31.2013.03.01.09.35.44 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 01 Mar 2013 09:35:45 -0800 (PST) From: Richard Henderson To: libc-ports@sourceware.org Cc: joseph@codesourcery.com Subject: [PATCH v2 07/14] arm: Commonize BX conditionals Date: Fri, 01 Mar 2013 17:36:00 -0000 Message-Id: <1362159320-5934-8-git-send-email-rth@twiddle.net> In-Reply-To: <1362159320-5934-1-git-send-email-rth@twiddle.net> References: <1362159320-5934-1-git-send-email-rth@twiddle.net> X-IsSubscribed: yes Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org X-SW-Source: 2013-03/txt/msg00008.txt.bz2 Add BLX macro in addition and use it where appropriate. --- * sysdeps/arm/sysdep.h (BX, BXC, BLX): New macros. (DO_RET): Use BX. (RETINSTR): Use BXC. * sysdeps/arm/dl-tlsdesc.S (BX): Remove. * sysdeps/arm/dl-trampoline.S (BX): Remove. (_dl_runtime_profile): Use BLX. --- ports/sysdeps/arm/dl-tlsdesc.S | 6 ------ ports/sysdeps/arm/dl-trampoline.S | 9 +-------- ports/sysdeps/arm/sysdep.h | 29 +++++++++++++---------------- 3 files changed, 14 insertions(+), 30 deletions(-) diff --git a/ports/sysdeps/arm/dl-tlsdesc.S b/ports/sysdeps/arm/dl-tlsdesc.S index 3a956de..aa3db80 100644 --- a/ports/sysdeps/arm/dl-tlsdesc.S +++ b/ports/sysdeps/arm/dl-tlsdesc.S @@ -20,12 +20,6 @@ #include #include "tlsdesc.h" -#ifdef __USE_BX__ - #define BX(x) bx x -#else - #define BX(x) mov pc, x -#endif - .text @ emit debug information with cfi @ use arm-specific pseudos for unwinding itself diff --git a/ports/sysdeps/arm/dl-trampoline.S b/ports/sysdeps/arm/dl-trampoline.S index f2d1679..9366976 100644 --- a/ports/sysdeps/arm/dl-trampoline.S +++ b/ports/sysdeps/arm/dl-trampoline.S @@ -21,12 +21,6 @@ #include #include -#if defined(__USE_BX__) -#define BX(x) bx x -#else -#define BX(x) mov pc, x -#endif - .text .globl _dl_runtime_resolve .type _dl_runtime_resolve, #function @@ -192,8 +186,7 @@ _dl_runtime_profile: add ip, r7, #72 ldmia ip, {r0-r3} ldr ip, [r7, #264] - mov lr, pc - BX(ip) + BLX(ip) stmia r7, {r0-r3} @ Call pltexit. diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h index 5f6c3f2..84313fe 100644 --- a/ports/sysdeps/arm/sysdep.h +++ b/ports/sysdeps/arm/sysdep.h @@ -33,26 +33,23 @@ #define PLTJMP(_x) _x##(PLT) -/* APCS-32 doesn't preserve the condition codes across function call. */ -#ifdef __APCS_32__ #ifdef __USE_BX__ -#define RETINSTR(cond, reg) \ - bx##cond reg -#define DO_RET(_reg) \ - bx _reg +# define BX(R) bx R +# define BXC(C, R) bx##C R +# ifdef __ARM_ARCH_4T__ +# define BLX(R) mov lr, pc; bx R +# else +# define BLX(R) blx R +# endif #else -#define RETINSTR(cond, reg) \ - mov##cond pc, reg -#define DO_RET(_reg) \ - mov pc, _reg -#endif -#else /* APCS-26 */ -#define RETINSTR(cond, reg) \ - mov##cond##s pc, reg -#define DO_RET(_reg) \ - movs pc, _reg +# define BX(R) mov pc, R +# define BXC(C, R) mov##C pc, R +# define BLX(R) mov lr, pc; mov pc, R #endif +#define DO_RET(R) BX(R) +#define RETINSTR(C, R) BXC(C, R) + /* Define an entry point visible from C. */ #define ENTRY(name) \ .globl C_SYMBOL_NAME(name); \ -- 1.8.1.2