[U-Boot] [PATCH] arm: bugfix: Move vector table before jumping relocated code

Tetsuyuki Kobayashi
2012-12-25T23:18:45Z

Hello, Joel

(2012/12/22 0:17), Joel A Fernandes wrote:
> Hi Tesuyuki and friends,
>
> I had a question with this patch.
>
> On Wed, Jun 27, 2012 at 8:27 PM, Tetsuyuki Kobayashi <koba@kmckk.co.jp> wrote:
>>>> This patch moves vector table before jumping relocated code.
>>>>
>>>> Signed-off-by: Tetsuyuki Kobayashi<koba@kmckk.co.jp>
>>>> ---
>>>> arch/arm/cpu/armv7/start.S | 12 ++++++++++++
>>>> 1 file changed, 12 insertions(+)
>>>>
>>>> diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
>>>> index 52f7f6e..5098f7b 100644
>>>> --- a/arch/arm/cpu/armv7/start.S
>>>> +++ b/arch/arm/cpu/armv7/start.S
>>>> @@ -277,6 +277,18 @@ jump_2_ram:
>>>> mcr p15, 0, r0, c7, c10, 4 @ DSB
>>>> mcr p15, 0, r0, c7, c5, 4 @ ISB
>>>> #endif
>>>> +/*
>>>> + * Move vector table
>>>> + */
>>>> +#if !defined(CONFIG_TEGRA2)
>>>> +#if !(defined(CONFIG_OMAP44XX)&& defined(CONFIG_SPL_BUILD))
>>>>
>>>> + /* Set vector address in CP15 VBAR register */
>>>> + ldr r0, =_start
>>>> + add r0, r0, r9
>>>> + mcr p15, 0, r0, c12, c0, 0 @Set VBAR
>>>> +#endif
>
> Why is c12 (VBAR) setup only for SPL builds? Because main u-boot does
> relocation too, shouldn't we setup c12 to point to new table addr
> after relocation?

You may mis-understand. ! means NOT.