Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
dcache_clear.h
Go to the documentation of this file.
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 */