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

Joel A Fernandes agnel.joel at gmail.com
Fri Dec 21 16:17:19 CET 2012


Hi Tesuyuki and friends,

I had a question with this patch.

On Wed, Jun 27, 2012 at 8:27 PM, Tetsuyuki Kobayashi <koba at kmckk.co.jp> wrote:
>>> This patch moves vector table before jumping relocated code.
>>>
>>> Signed-off-by: Tetsuyuki Kobayashi<koba at 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?

Also how do interrupts (irq/fiq) work at all in U-boot if c12 is  not
setup to point to the new vector table address after relocation?

Thanks,
Joel


More information about the U-Boot mailing list