Merge branch 'drm-patches' of master.kernel.org:/pub/scm/linux/kernel/git/airlied...
[linux-drm-fsl-dcu.git] / arch / sh / kernel / cpu / sh2 / entry.S
index 34d51b3745eac80e35fccbb804f571b991595013..c16dc8fec489655ccf106612ab77a0adf6c3b7c0 100644 (file)
@@ -165,6 +165,7 @@ ENTRY(exception_handler)
 
 interrupt_entry:
        mov     r9,r4
+       mov     r15,r5
        mov.l   6f,r9
        mov.l   7f,r8
        jmp     @r8
@@ -177,15 +178,19 @@ interrupt_entry:
 7:     .long   do_IRQ
 8:     .long   do_exception_error
        
-trap_entry:    
-       add     #-0x10,r9
+trap_entry:
+       mov     #0x30,r8
+       cmp/ge  r8,r9           ! vector 0x20-0x2f is systemcall
+       bt      1f
+       add     #-0x10,r9       ! convert SH2 to SH3/4 ABI
+1:     
        shll2   r9                      ! TRA
        mov     #OFF_TRA,r8
        add     r15,r8
        mov.l   r9,@r8
        mov     r9,r8
 #ifdef CONFIG_TRACE_IRQFLAGS
-       mov.l   5f, r9
+       mov.l   2f, r9
        jsr     @r9
         nop
 #endif
@@ -194,17 +199,13 @@ trap_entry:
         nop
        
        .align  2
-1:     .long   syscall_exit
-2:     .long   break_point_trap_software
-3:     .long   NR_syscalls
-4:     .long   sys_call_table
 #ifdef CONFIG_TRACE_IRQFLAGS
-5:     .long   trace_hardirqs_on
+2:     .long   trace_hardirqs_on
 #endif
 
 #if defined(CONFIG_SH_STANDARD_BIOS)
        /* Unwind the stack and jmp to the debug entry */
-debug_kernel_fw:
+ENTRY(sh_bios_handler)
        mov     r15,r0
        add     #(22-4)*4-4,r0
        ldc.l   @r0+,gbr
@@ -264,7 +265,7 @@ ENTRY(address_error_handler)
 restore_all:
        cli
 #ifdef CONFIG_TRACE_IRQFLAGS
-       mov.l   3f, r0
+       mov.l   1f, r0
        jsr     @r0
         nop
 #endif
@@ -309,20 +310,14 @@ restore_all:
        mov.l   @r15,r15
        rte
         nop
-2:
-       mov.l   1f,r8
-       mov.l   2f,r9
-       jmp     @r9
-        lds    r8,pr
 
-       .align  2
+#ifdef CONFIG_TRACE_IRQFLAGS
+1:     .long   trace_hardirqs_off
+#endif
 $current_thread_info:
        .long   __current_thread_info
 $cpu_mode:     
        .long   __cpu_mode
-#ifdef CONFIG_TRACE_IRQFLAGS
-3:     .long   trace_hardirqs_off
-#endif
                
 ! common exception handler
 #include "../../entry-common.S"