| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- From eba69831e8f35174e2e15e373a66f40dc0be8929 Mon Sep 17 00:00:00 2001
- From: Kurt Mahan <[email protected]>
- Date: Wed, 14 May 2008 12:23:12 -0600
- Subject: [PATCH] Force branch-cache invalidate on task switch.
- When finishing a task switch make sure the branch cache
- gets invalidated to ensure no stale entries exist for
- the next user space.
- LTIBName: mcfv4e-brcache-inval
- Signed-off-by: Kurt Mahan <[email protected]>
- ---
- include/asm-m68k/system.h | 15 +++++++++++++++
- 1 files changed, 15 insertions(+), 0 deletions(-)
- --- a/include/asm-m68k/system.h
- +++ b/include/asm-m68k/system.h
- @@ -5,9 +5,24 @@
- #include <linux/kernel.h>
- #include <asm/segment.h>
- #include <asm/entry.h>
- +#include <asm/cfcache.h>
-
- #ifdef __KERNEL__
-
- +#ifdef CONFIG_COLDFIRE
- +#define FLUSH_BC (0x00040000)
- +
- +#define finish_arch_switch(prev) do { \
- + unsigned long tmpreg; \
- + asm volatile ( "move.l %2,%0\n" \
- + "orl %1,%0\n" \
- + "movec %0,%%cacr" \
- + : "=&d" (tmpreg) \
- + : "id" (FLUSH_BC), "m" (shadow_cacr)); \
- + } while(0)
- +
- +#endif
- +
- /*
- * switch_to(n) should switch tasks to task ptr, first checking that
- * ptr isn't the current task, in which case it does nothing. This
|