All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 4/9] arm: add _thumb1_case_uqi to libgcc
Date: Mon, 13 Aug 2012 17:44:05 -0600	[thread overview]
Message-ID: <50299145.4020801@wwwdotorg.org> (raw)
In-Reply-To: <1343853146-15498-5-git-send-email-amartin@nvidia.com>

On 08/01/2012 02:32 PM, Allen Martin wrote:
> Add function required by some thumb switch statements

> diff --git a/arch/arm/lib/_thumb1_case_uqi.S b/arch/arm/lib/_thumb1_case_uqi.S

> +	.force_thumb

I believe that line should be removed.

The issue here is that when gcc emits Thumb code to call this function,
it actually emits:

>   108af8:       f000 f94a       bl      108d90 <____gnu_thumb1_case_uqi_from_thumb>

which is implemented as:

> 00108d90 <____gnu_thumb1_case_uqi_from_thumb>:
>   108d90:       4778            bx      pc
>   108d92:       46c0            nop                     ; (mov r8, r8)
>   108d94:       eafffde1        b       108520 <__gnu_thumb1_case_uqi>

i.e. it switches to ARM mode then jumps to that function. Hence,
__gnu_thumb1_case_uqi must be compiled as ARM, not as Thumb.

(renaming the function to ____gnu_thumb1_case_uqi_from_thumb in the hope
it'll be called directly instead of going through a stub doesn't seem to
work)

If I make that change, then this patch series starts working on
Whistler, which for reference, uses UARTA, so triggers funcmux.c's
funcmux_select() to enter case PERIPH_ID_UART1, which then uses
____gnu_thumb1_case_uqi_from_thumb to perform the nested switch (config).

  reply	other threads:[~2012-08-13 23:44 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 [this message]
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
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=50299145.4020801@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --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.