dcache_clear.h 1.0 KB

1234567891011121314151617181920212223242526272829
  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. #ifdef CONFIG_CHIP_M32700_TS1
  12. #define DCACHE_CLEAR(reg0, reg1, addr) \
  13. "seth "reg1", #high(dcache_dummy); \n\t" \
  14. "or3 "reg1", "reg1", #low(dcache_dummy); \n\t" \
  15. "lock "reg0", @"reg1"; \n\t" \
  16. "add3 "reg0", "addr", #0x1000; \n\t" \
  17. "ld "reg0", @"reg0"; \n\t" \
  18. "add3 "reg0", "addr", #0x2000; \n\t" \
  19. "ld "reg0", @"reg0"; \n\t" \
  20. "unlock "reg0", @"reg1"; \n\t"
  21. /* FIXME: This workaround code cannot handle kernel modules
  22. * correctly under SMP environment.
  23. */
  24. #else /* CONFIG_CHIP_M32700_TS1 */
  25. #define DCACHE_CLEAR(reg0, reg1, addr)
  26. #endif /* CONFIG_CHIP_M32700_TS1 */
  27. #endif /* _ASM_M32R_DCACHE_CLEAR_H */