Commit | Line | Data |
---|---|---|
c9034c3a DH |
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 */ |