43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From eba69831e8f35174e2e15e373a66f40dc0be8929 Mon Sep 17 00:00:00 2001
 | 
						|
From: Kurt Mahan <kmahan@freescale.com>
 | 
						|
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 <kmahan@freescale.com>
 | 
						|
---
 | 
						|
 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
 |