30 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			30 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * This file is subject to the terms and conditions of the GNU General Public
							 | 
						||
| 
								 | 
							
								 * License.  See the file "COPYING" in the main directory of this archive
							 | 
						||
| 
								 | 
							
								 * for more details.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2001  Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2004, 2006  Hirokazu Takata <takata at linux-m32r.org>
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#ifndef _ASM_M32R_DCACHE_CLEAR_H
							 | 
						||
| 
								 | 
							
								#define _ASM_M32R_DCACHE_CLEAR_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef CONFIG_CHIP_M32700_TS1
							 | 
						||
| 
								 | 
							
								#define DCACHE_CLEAR(reg0, reg1, addr)				\
							 | 
						||
| 
								 | 
							
									"seth	"reg1", #high(dcache_dummy);		\n\t"	\
							 | 
						||
| 
								 | 
							
									"or3	"reg1", "reg1", #low(dcache_dummy);	\n\t"	\
							 | 
						||
| 
								 | 
							
									"lock	"reg0", @"reg1";			\n\t"	\
							 | 
						||
| 
								 | 
							
									"add3	"reg0", "addr", #0x1000;		\n\t"	\
							 | 
						||
| 
								 | 
							
									"ld	"reg0", @"reg0";			\n\t"	\
							 | 
						||
| 
								 | 
							
									"add3	"reg0", "addr", #0x2000;		\n\t"	\
							 | 
						||
| 
								 | 
							
									"ld	"reg0", @"reg0";			\n\t"	\
							 | 
						||
| 
								 | 
							
									"unlock	"reg0", @"reg1";			\n\t"
							 | 
						||
| 
								 | 
							
									/* FIXME: This workaround code cannot handle kernel modules
							 | 
						||
| 
								 | 
							
									 * correctly under SMP environment.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
								#else	/* CONFIG_CHIP_M32700_TS1 */
							 | 
						||
| 
								 | 
							
								#define DCACHE_CLEAR(reg0, reg1, addr)
							 | 
						||
| 
								 | 
							
								#endif	/* CONFIG_CHIP_M32700_TS1 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* _ASM_M32R_DCACHE_CLEAR_H */
							 |