s5p6442: Workaround fix EVT1 imprecise abort error
authorJoonyoung Shim <jy0922.shim@samsung.com>
Wed, 20 Jan 2010 09:40:07 +0000 (18:40 +0900)
committerJoonyoung Shim <jy0922.shim@samsung.com>
Wed, 20 Jan 2010 09:40:07 +0000 (18:40 +0900)
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
cpu/arm1176/start.S

index 4c85c3f..adb37bd 100644 (file)
@@ -129,6 +129,25 @@ _bss_end:
  */
 
 reset:
+#ifdef CONFIG_S5P6442_EVT1
+       ldr     r0, =0xD0021800
+       mcr     p15, 0, r0, c12, c0, 0          @;Change Exception Vector Base Address
+
+       mrs     r0, cpsr
+       bic     r0, r0, #0x100
+       msr     cpsr_x, r0                      @;Enable Imprecise Abort Exception
+
+       nop                                     @;Data Abort Exception will occurred
+       nop
+
+       mrs     r0, cpsr                        @;Disable Imprecise Abort Exception
+       orr     r0, r0, #0x100
+       msr     cpsr_x, r0
+
+       ldr     r0, =0x0
+       mcr     p15, 0, r0, c12, c0, 0          @;Restore Exception Vector Base Address
+#endif
+
        /*
         * set the cpu to SVC32 mode
         */
@@ -449,6 +468,9 @@ prefetch_abort:
 
        .align  5
 data_abort:
+#ifdef CONFIG_S5P6442_EVT1
+       subs    pc, lr, #4
+#endif
        get_bad_stack
        bad_save_user_regs
        bl      do_data_abort