Hi Albert,

On 17/01/2015 07:40, Albert ARIBAUD wrote:
Hello Luca,

On Mon, 29 Dec 2014 16:10:53 +0100, Luca Ellero
<luca.ell...@brickedbrain.com> wrote:
After relocation, exception vectors still point to the old code (not relocated).
This patch fixes them.

Signed-off-by: Luca Ellero <luca.ell...@brickedbrain.com>
---
  arch/arm/lib/relocate.S |   15 +++++++++++++++
  1 file changed, 15 insertions(+)

diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S
index 92f5314..4186344 100644
--- a/arch/arm/lib/relocate.S
+++ b/arch/arm/lib/relocate.S
@@ -76,6 +76,21 @@ copy_loop:
        blo     copy_loop

        /*
+        * fix exception vectors
+        */
+       ldr r2, =_undefined_instruction
+       ldr r3, =_fiq
+       add     r2, r2, r4
+       add     r3, r3, r4
+fix_exceptions:
+       ldr r0, [r2]
+       add     r0, r0, r4
+       str     r0, [r2]
+       cmp r2,r3
+       add r2, #4
+       blo fix_exceptions
+
+       /*
         * fix .rel.dyn relocations
         */
        ldr     r2, =__rel_dyn_start    /* r2 <- SRC &__rel_dyn_start */
--
1.7.10.4


There is already a mechanism to relocate vectors (do a git grep for
'relocate_vectors' which takes into account various ISA and SoC cases.

Can you describe the use case which you are encountering?

As far as I can see the mechanism to relocate vectors is implemented only on iMX25/27 and involves high vectors address (0xFFFFxxxx).

The problem is that, after relocation, U-Boot doesn't fix the vector table addresses, they still point to the old addresses (before relocation).
This is wrong and this patch fixes them to point to the new addresses.

I had to use this patch trying to implement IRQ support for a Freescale iMX6 board. iMX6 does not provide RAM at the high vectors address and trying to access them leads to errors, so I couldn't use them.

Regards

--
Luca Ellero

E-mail: luca.ell...@brickedbrain.com
Internet: www.brickedbrain.com

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to