diff options
Diffstat (limited to 'packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch')
-rw-r--r-- | packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch b/packages/uboot/u-boot-mkimage-openmoko-native/uboot-s3c2410-norelocate_irqvec_cpy.patch new file mode 100644 index 0000000000..0d5a49771d --- /dev/null +++ b/packages/uboot/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: |