summaryrefslogtreecommitdiff
path: root/packages/u-boot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch
blob: 0d5a49771d8e5ca603fde27715a31e8691e29645 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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: