sh: prefetch early exception data on sh4/sh4a.
authorMagnus Damm <damm@igel.co.jp>
Fri, 27 Feb 2009 07:41:17 +0000 (16:41 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 27 Feb 2009 07:41:17 +0000 (16:41 +0900)
Prefetch early exception data. There is unused space in our
exception handler cache line anyway, so this is almost free.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/entry-macros.S
arch/sh/kernel/cpu/sh3/entry.S

index 2dab0b8..3a4752a 100644 (file)
@@ -31,3 +31,8 @@
 #endif 
        .endm
 
+#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)
+# define PREF(x)       pref    @x
+#else
+# define PREF(x)       nop
+#endif
index 0271fe0..e984e94 100644 (file)
@@ -463,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
@@ -556,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