All of lore.kernel.org
 help / color / mirror / Atom feed
From: Allen Martin <amartin@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 8/9] arm: use thumb interworking returns in libgcc
Date: Wed, 1 Aug 2012 14:55:08 -0700	[thread overview]
Message-ID: <20120801215508.GB1796@nvidia.com> (raw)
In-Reply-To: <CAM=4YET4BGLkJ7UyHd8ritrCQXPR6wa7+9hN8C4Q9dLZ2GbFYA@mail.gmail.com>

On Wed, Aug 01, 2012 at 02:11:48PM -0700, V, Aneesh wrote:
> Hi Allen,
> 
> On Wed, Aug 1, 2012 at 1:32 PM, Allen Martin <amartin at nvidia.com<mailto:amartin@nvidia.com>> wrote:
> If CONFIG_SYS_THUMB_BUILD is enabled, use thumb interworking return
> instructions from libgcc routines, otherwise use ARM returns.
> 
> Signed-off-by: Allen Martin <amartin at nvidia.com<mailto:amartin@nvidia.com>>
> ---
>  arch/arm/include/asm/assembler.h |   10 ++++++++++
>  arch/arm/lib/_ashldi3.S          |    3 ++-
>  arch/arm/lib/_ashrdi3.S          |    3 ++-
>  arch/arm/lib/_divsi3.S           |   15 +++++++++++----
>  arch/arm/lib/_lshrdi3.S          |    3 ++-
>  arch/arm/lib/_modsi3.S           |    9 ++++++++-
>  arch/arm/lib/_udivsi3.S          |    8 +++++---
>  arch/arm/lib/_umodsi3.S          |   18 +++++++++++++++++-
>  arch/arm/lib/memcpy.S            |   10 ++++++++++
>  arch/arm/lib/memset.S            |    3 ++-
>  10 files changed, 69 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
> index 5e4789b..25ece01 100644
> --- a/arch/arm/include/asm/assembler.h
> +++ b/arch/arm/include/asm/assembler.h
> @@ -13,6 +13,7 @@
>   *  Do not include any C declarations in this file - it is included by
>   *  assembler source.
>   */
> +#include <config.h>
> 
>  /*
>   * Endian independent macros for shifting bytes within registers.
> @@ -58,3 +59,12 @@
>   * Cache alligned
>   */
>  #define CALGN(code...) code
> +
> +/*
> + * return instruction
> + */
> +#ifdef CONFIG_SYS_THUMB_BUILD
> +#define RET    bx      lr
> +#else
> +#define RET    mov     pc, lr
> 
> Why not "bx lr" in all cases? In that case you can just replace all the instances of
> "mov pc, lr" directly by "bx lr" instead of this macro. That looks cleaner to me.

I didn't want to break any older ARM architectures that don't support the
bx instruction but use this code.


> BTW, as far as I remember when I did this originally my compiler was compiling
> all assembly functions in ARM and it was automatically converting "mov pc, lr" to
> "bx lr" ,where necessary. Maybe that was just my compiler and I don't remember
> the details now. Did you really face any issue with "mov pc, lr" making wrong jumps?

Yes, without this change if I disassemble the code I'm seeing it's
still a mov instruction and it hangs.

-Allen
-- 
nvpublic

  reply	other threads:[~2012-08-01 21:55 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-01 20:32 [U-Boot] [PATCH v2 0/9] enable thumb for tegra20 Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 1/9] tools, config.mk: add binutils-version Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 2/9] arm: work around assembler bug Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 3/9] tegra20: remove inline assembly for u32 cast Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 4/9] arm: add _thumb1_case_uqi to libgcc Allen Martin
2012-08-13 23:44   ` Stephen Warren
2012-08-14  0:36     ` Allen Martin
2012-08-14  2:39       ` V, Aneesh
2012-08-14 16:02         ` Stephen Warren
2012-08-01 20:32 ` [U-Boot] [PATCH v2 5/9] arm: use thumb compatible return in arm720t Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 6/9] arm: change arm720t to armv4t Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 7/9] arm720t: add linkage macro for relocate_code Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 8/9] arm: use thumb interworking returns in libgcc Allen Martin
2012-08-01 21:11   ` V, Aneesh
2012-08-01 21:55     ` Allen Martin [this message]
2012-08-01 22:15       ` V, Aneesh
2012-08-01 22:28         ` Allen Martin
2012-08-01 20:32 ` [U-Boot] [PATCH v2 9/9] tegra20: enable thumb build Allen Martin
2012-08-13 21:21 ` [U-Boot] [PATCH v2 0/9] enable thumb for tegra20 Stephen Warren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120801215508.GB1796@nvidia.com \
    --to=amartin@nvidia.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.