arm: bugfix: Move vector table before jumping relocated code
Interrupts and exceptions doesn't work in relocated code. It badly use IRQ_STACK_START_IN in rom area as interrupt stack. It is because the vecotr table is not moved to ram area. This patch moves vector table before jumping relocated code. Signed-off-by: Tetsuyuki Kobayashi <koba@kmckk.co.jp> Tested-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
0ec005fe00
commit
f8b9d1d30e
|
@ -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
|
||||
#endif /* !Tegra2 */
|
||||
|
||||
ldr r0, _board_init_r_ofs
|
||||
adr r1, _start
|
||||
add lr, r0, r1
|
||||
|
|
Loading…
Reference in New Issue