• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 2001  Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto
7  * Copyright (C) 2004, 2006  Hirokazu Takata <takata at linux-m32r.org>
8  */
9 #ifndef _ASM_M32R_DCACHE_CLEAR_H
10 #define _ASM_M32R_DCACHE_CLEAR_H
11 
12 #ifdef CONFIG_CHIP_M32700_TS1
13 #define DCACHE_CLEAR(reg0, reg1, addr)				\
14 	"seth	"reg1", #high(dcache_dummy);		\n\t"	\
15 	"or3	"reg1", "reg1", #low(dcache_dummy);	\n\t"	\
16 	"lock	"reg0", @"reg1";			\n\t"	\
17 	"add3	"reg0", "addr", #0x1000;		\n\t"	\
18 	"ld	"reg0", @"reg0";			\n\t"	\
19 	"add3	"reg0", "addr", #0x2000;		\n\t"	\
20 	"ld	"reg0", @"reg0";			\n\t"	\
21 	"unlock	"reg0", @"reg1";			\n\t"
22 	/* FIXME: This workaround code cannot handle kernel modules
23 	 * correctly under SMP environment.
24 	 */
25 #else	/* CONFIG_CHIP_M32700_TS1 */
26 #define DCACHE_CLEAR(reg0, reg1, addr)
27 #endif	/* CONFIG_CHIP_M32700_TS1 */
28 
29 #endif /* _ASM_M32R_DCACHE_CLEAR_H */
30