mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			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
 |