]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/sh/kernel/cpu/sh3/entry.S
sh: prefetch early exception data on sh4/sh4a.
[linux-2.6-omap-h63xx.git] / arch / sh / kernel / cpu / sh3 / entry.S
index cbffbffce351dfaeecc2b51fa80b0d1276e4c221..e984e94394ec34b96ba5d884b8bcce3c0b9eafce 100644 (file)
@@ -312,7 +312,6 @@ skip_restore:
        mov     #0, k1
        mov.b   k1, @k0
 #endif
-       mov.l   @r15+, k2               ! restore EXPEVT
        mov     k4, r15
        rte
         nop
@@ -464,9 +463,11 @@ tlb_miss:
        sts     pr, k3          ! save original pr value in k3
 
 handle_exception:
+       mova    exception_data, k0
+
        ! Setup stack and save DSP context (k0 contains original r15 on return)
        bsr     prepare_stack_save_dsp
-        nop
+        PREF(k0)
 
        ! Save registers / Switch to bank 0
        mov.l   5f, k2          ! vector register address
@@ -487,20 +488,18 @@ handle_exception_special:
        .align  L1_CACHE_SHIFT
 
 ! save_regs()
-! - save vector, default tra, macl, mach, gbr, ssr, pr* and spc on the stack
+! - save default tra, macl, mach, gbr, ssr, pr* and spc on the stack
 ! - save r15*, r14, r13, r12, r11, r10, r9, r8 on the stack
 ! - switch bank
 ! - save r7, r6, r5, r4, r3, r2, r1, r0 on the stack
 ! k0 contains original stack pointer*
 ! k1 trashed
-! k2 passes vector (EXPEVT)
 ! k3 passes original pr*
 ! k4 trashed
 ! BL=1 on entry, on exit BL=0.
 
 save_regs:
        mov     #-1, r1
-       mov.l   k2, @-r15       ! vector in k2
        mov.l   k1, @-r15       ! set TRA (default: -1)
        sts.l   macl, @-r15
        sts.l   mach, @-r15
@@ -559,10 +558,11 @@ ENTRY(handle_interrupt)
 11:
 #endif /* defined(CONFIG_KGDB) */
        sts     pr, k3          ! save original pr value in k3
+       mova    exception_data, k0
 
        ! Setup stack and save DSP context (k0 contains original r15 on return)
        bsr     prepare_stack_save_dsp
-        nop
+        PREF(k0)
 
        ! Save registers / Switch to bank 0
        bsr     save_regs       ! needs original pr value in k3