From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 1/2] arm: add support for semihosting for ARMv7M targets
Date: Tue, 10 Nov 2015 15:02:30 +0100 [thread overview]
Message-ID: <20151110150230.6a72e704@lilith> (raw)
In-Reply-To: <1445272815-7243-1-git-send-email-pftbest@gmail.com>
Hello Vadzim,
On Mon, 19 Oct 2015 19:40:14 +0300, Vadzim Dambrouski <pftbest@gmail.com> wrote:
> If you enable CONFIG_SEMIHOSTING for STM32F429 target, you will get compile
> error looking like this:
>
> arch/arm/lib/semihosting.c: In function 'smh_read':
> {standard input}: Assembler messages:
> {standard input}:34: Error: invalid swi expression
> {standard input}:34: Error: value of 1193046 too large for field of 2 bytes at 0
> scripts/Makefile.build:277: recipe for target 'arch/arm/lib/semihosting.o' failed
>
> The source of the problem is "svc #0x123456" instruction. This instruction
> can not be encoded using Thumb2 instruction set used by ARMv7M CPUs.
> ARM documentation suggests using "bkpt #0xAB" instruction instead [1].
> This patch fixes compile errors and adds support for semihosting for
> STM32F429 or any other ARMv7M target.
> This change was sested on STM32F429-DISCOVERY board using OpenOCD and
> "smhload" u-boot command.
>
> [1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Bgbjhiea.html
>
> Signed-off-by: Vadzim Dambrouski <pftbest@gmail.com>
> ---
>
> arch/arm/lib/semihosting.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
> index c3e964e..ed5e8e4 100644
> --- a/arch/arm/lib/semihosting.c
> +++ b/arch/arm/lib/semihosting.c
> @@ -31,6 +31,8 @@ static noinline long smh_trap(unsigned int sysnum, void *addr)
> register long result asm("r0");
> #if defined(CONFIG_ARM64)
> asm volatile ("hlt #0xf000" : "=r" (result) : "0"(sysnum), "r"(addr));
> +#elif defined(CONFIG_CPU_V7M)
> + asm volatile ("bkpt #0xAB" : "=r" (result) : "0"(sysnum), "r"(addr));
> #else
> /* Note - untested placeholder */
> asm volatile ("svc #0x123456" : "=r" (result) : "0"(sysnum), "r"(addr));
> --
> 2.6.1
>
Applied to u-boot-arm/master, thanks!
Amicalement,
--
Albert.
prev parent reply other threads:[~2015-11-10 14:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-19 16:40 [U-Boot] [PATCH v3 1/2] arm: add support for semihosting for ARMv7M targets Vadzim Dambrouski
2015-10-19 16:40 ` [U-Boot] [PATCH v3 2/2] arm: fix compile warnings when semihosting is enabled on ARMv7M target Vadzim Dambrouski
2015-11-10 14:02 ` Albert ARIBAUD
2015-10-22 10:42 ` [U-Boot] [PATCH v3 1/2] arm: add support for semihosting for ARMv7M targets Albert ARIBAUD
2015-11-10 14:02 ` Albert ARIBAUD [this message]
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=20151110150230.6a72e704@lilith \
--to=albert.u.boot@aribaud.net \
--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.