From: Albert ARIBAUD <albert.u.boot@aribaud.net>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 2/3] arm: relocate the exception vectors
Date: Sat, 11 Oct 2014 12:47:22 +0200 [thread overview]
Message-ID: <E1XcuCp-0008MB-MJ@janus> (raw)
In-Reply-To: <1411847291-1790-3-git-send-email-savoundg@gmail.com>
Hi Georges,
On Sat, 27 Sep 2014 21:48:10 +0200, Georges Savoundararadj
<savoundg@gmail.com> wrote:
> This commit relocates the exception vectors.
> As ARM1176 and ARMv7 have the security extensions, it uses VBAR. For
> the other ARM processors, it copies the relocated exception vectors to
> the correct address: 0x00000000 or 0xFFFF0000.
>
> Signed-off-by: Georges Savoundararadj <savoundg@gmail.com>
> Cc: Albert Aribaud <albert.u.boot@aribaud.net>
> Cc: Tom Warren <twarren@nvidia.com>
>
> ---
> This patch needs some tests because it impacts many boards. I have
> tested it with my raspberry pi in the two cases: using VBAR and
> using the copied exception vectors.
>
> Changes in v2:
> - Relocate exception vectors also on processors which do not support
> security extensions
> - Reword the commit message
>
> arch/arm/cpu/armv7/start.S | 6 ------
> arch/arm/lib/relocate.S | 30 ++++++++++++++++++++++++++++++
> 2 files changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
> index fedd7c8..fdc05b9 100644
> --- a/arch/arm/cpu/armv7/start.S
> +++ b/arch/arm/cpu/armv7/start.S
> @@ -81,12 +81,6 @@ ENTRY(c_runtime_cpu_setup)
> mcr p15, 0, r0, c7, c10, 4 @ DSB
> mcr p15, 0, r0, c7, c5, 4 @ ISB
> #endif
> -/*
> - * Move vector table
> - */
> - /* Set vector address in CP15 VBAR register */
> - ldr r0, =_start
> - mcr p15, 0, r0, c12, c0, 0 @Set VBAR
>
> bx lr
>
> diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S
> index 8035251..88a478e 100644
> --- a/arch/arm/lib/relocate.S
> +++ b/arch/arm/lib/relocate.S
> @@ -6,6 +6,8 @@
> * SPDX-License-Identifier: GPL-2.0+
> */
>
> +#include <asm-offsets.h>
> +#include <config.h>
> #include <linux/linkage.h>
>
> /*
> @@ -52,6 +54,34 @@ fixnext:
> cmp r2, r3
> blo fixloop
>
> + /*
> + * Relocate the exception vectors
> + */
> +#if (defined(CONFIG_ARM1176) || defined(CONFIG_ARMV7))
I would prefer a single CONFIG_HAS_VBAR symbol defined through
Kconfig.
> + /*
> + * If the ARM processor has the security extensions,
> + * use VBAR to relocate the exception vectors.
> + */
> + ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
> + mcr p15, 0, r0, c12, c0, 0 /* Set VBAR */
> +#else
> + /*
> + * Copy the relocated exception vectors to the
> + * correct address
> + * CP15 c1 V bit gives us the location of the vectors:
> + * 0x00000000 or 0xFFFF0000.
> + */
> + ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */
> + mrc p15, 0, r2, c1, c0, 0 /* V bit (bit[13]) in CP15 c1 */
> + ands r2, r2, #(1 << 13)
> + ldreq r1, =0x00000000 /* If V=0 */
> + ldrne r1, =0xFFFF0000 /* If V=1 */
> + ldmia r0!, {r2-r8,r10}
> + stmia r1!, {r2-r8,r10}
> + ldmia r0!, {r2-r8,r10}
> + stmia r1!, {r2-r8,r10}
> +#endif
> +
> relocate_done:
>
> #ifdef __XSCALE__
Amicalement,
--
Albert.
next prev parent reply other threads:[~2014-10-11 10:47 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-21 21:33 [U-Boot] [PATCH 0/3] arm: add interrupt support Georges Savoundararadj
2014-09-21 21:33 ` [U-Boot] [PATCH 1/3] arm: make .vectors section allocatable Georges Savoundararadj
2014-09-24 7:34 ` Albert ARIBAUD
2014-09-25 20:11 ` Georges Savoundararadj
2014-09-21 21:33 ` [U-Boot] [PATCH 2/3] arm1176: move exception vectors after relocation Georges Savoundararadj
2014-09-21 21:33 ` [U-Boot] [PATCH 3/3] arm: enable_interrupts: set sp in IRQ/FIQ modes Georges Savoundararadj
2014-09-22 1:35 ` [U-Boot] [PATCH 0/3] arm: add interrupt support Masahiro Yamada
2014-09-22 18:24 ` Georges Savoundararadj
2014-09-23 3:17 ` Masahiro YAMADA
2014-09-24 7:20 ` Albert ARIBAUD
2014-09-24 7:22 ` Albert ARIBAUD
2014-09-27 19:48 ` [U-Boot] [PATCH v2 0/3] arm: fix exception handling Georges Savoundararadj
2014-09-27 19:48 ` [U-Boot] [PATCH v2 1/3] arm: make .vectors section allocatable Georges Savoundararadj
2014-09-27 19:48 ` [U-Boot] [PATCH v2 2/3] arm: relocate the exception vectors Georges Savoundararadj
2014-10-11 10:47 ` Albert ARIBAUD [this message]
2014-10-14 20:02 ` Georges Savoundararadj
2014-10-14 22:11 ` Albert ARIBAUD
2014-10-20 21:08 ` Georges Savoundararadj
2014-10-21 5:41 ` Masahiro Yamada
2014-10-21 14:05 ` Albert ARIBAUD
2014-10-22 9:50 ` Masahiro Yamada
2014-10-22 20:29 ` Georges Savoundararadj
2014-10-21 13:54 ` Albert ARIBAUD
2014-10-22 9:54 ` Masahiro Yamada
2014-10-22 20:52 ` Georges Savoundararadj
2014-09-27 19:58 ` [U-Boot] [PATCH v2 3/3] arm: interrupt_init: set sp in IRQ/FIQ modes Georges Savoundararadj
2014-10-26 22:25 ` [U-Boot] [PATCH v3 0/4] arm: fix exception handling Georges Savoundararadj
2014-10-26 22:25 ` [U-Boot] [PATCH v3 1/4] kconfig: arm: introduce symbol for ARM CPUs Georges Savoundararadj
2014-10-27 16:50 ` Masahiro YAMADA
2014-10-27 17:09 ` Albert ARIBAUD
2014-10-27 17:23 ` Masahiro YAMADA
2014-10-28 7:01 ` Albert ARIBAUD
2014-10-28 16:10 ` Masahiro YAMADA
2014-10-28 15:57 ` Masahiro YAMADA
2014-10-28 18:58 ` Georges Savoundararadj
2014-10-26 22:25 ` [U-Boot] [PATCH v3 2/4] arm: make .vectors section allocatable Georges Savoundararadj
2014-10-26 23:20 ` Albert ARIBAUD
2014-10-26 22:25 ` [U-Boot] [PATCH v3 3/4] arm: relocate the exception vectors Georges Savoundararadj
2014-10-26 22:25 ` [U-Boot] [PATCH v3 4/4] arm: interrupt_init: set sp in IRQ/FIQ modes Georges Savoundararadj
2014-10-26 23:16 ` Albert ARIBAUD
2014-10-26 23:32 ` Albert ARIBAUD
2014-10-28 22:16 ` [U-Boot] [PATCH v4 0/4] arm: fix exception handling Georges Savoundararadj
2014-10-28 22:16 ` [U-Boot] [PATCH v4 1/4] kconfig: arm: introduce symbol for ARM CPUs Georges Savoundararadj
2014-10-29 8:07 ` Masahiro Yamada
2014-10-29 12:37 ` Tom Rini
2014-10-29 12:50 ` Albert ARIBAUD
2014-10-29 15:22 ` Tom Rini
2014-10-28 22:16 ` [U-Boot] [PATCH v4 2/4] arm: make .vectors section allocatable Georges Savoundararadj
2014-10-29 12:49 ` Albert ARIBAUD
2014-10-29 15:22 ` Tom Rini
2014-10-28 22:16 ` [U-Boot] [PATCH v4 3/4] arm: relocate the exception vectors Georges Savoundararadj
2014-10-29 12:49 ` Albert ARIBAUD
2014-10-29 15:22 ` Tom Rini
2014-10-28 22:16 ` [U-Boot] [PATCH v4 4/4] arm: interrupt_init: set sp in IRQ/FIQ modes Georges Savoundararadj
2014-10-29 12:49 ` Albert ARIBAUD
2014-10-29 15:22 ` Tom Rini
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=E1XcuCp-0008MB-MJ@janus \
--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.