aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch')
-rw-r--r--recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch b/recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
new file mode 100644
index 0000000000..0d5a49771d
--- /dev/null
+++ b/recipes/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
@@ -0,0 +1,32 @@
+If we've somehow magically make u-boot end up in RAM (JTAG, ...), then that RAM
+is mapped to 0x30000000 and not 0, so we need to copy the interrupt vectors, etc.
+
+Index: u-boot/cpu/arm920t/start.S
+===================================================================
+--- u-boot.orig/cpu/arm920t/start.S
++++ u-boot/cpu/arm920t/start.S
+@@ -332,7 +332,23 @@ done_nand_read:
+ strb r1, [r0]
+ #endif /* CONFIG_S3C2410_NAND_BOOT */
+ done_relocate:
+-#endif /* CONFIG_SKIP_RELOCATE_UBOOT */
++
++#if defined(CONFIG_USE_IRQ) && defined(CONFIG_S3C2410)
++ /* In the case of the S3C2410, if we've somehow magically (JTAG, ...)
++ ended up in RAM, then that ram is mapped to 0x30000000 and not 0.
++ So we need to copy the interrupt vectors, etc. */
++
++ mov r0, #0
++ ldr r1, _TEXT_BASE
++ mov r2, #0x40
++irqvec_cpy_next:
++ ldr r3, [r1], #4
++ str r3, [r0], #4
++ subs r2, r2, #4
++ bne irqvec_cpy_next
++#endif /* CONFIG_USE_IRQ */
++
++#endif /* !CONFIG_SKIP_RELOCATE_UBOOT */
+
+ /* Set up the stack */
+ stack_setup: