bcache.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  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) 1997, 1999 by Ralf Baechle
  7.  * Copyright (c) 1999 Silicon Graphics, Inc.
  8.  */
  9. #ifndef _ASM_BCACHE_H
  10. #define _ASM_BCACHE_H
  11. #include <linux/config.h>
  12. /* Some R4000 / R4400 / R4600 / R5000 machines may have a non-dma-coherent,
  13.    chipset implemented caches.  On machines with other CPUs the CPU does the
  14.    cache thing itself. */
  15. struct bcache_ops {
  16. void (*bc_enable)(void);
  17. void (*bc_disable)(void);
  18. void (*bc_wback_inv)(unsigned long page, unsigned long size);
  19. void (*bc_inv)(unsigned long page, unsigned long size);
  20. };
  21. extern void indy_sc_init(void);
  22. extern void sni_pcimt_sc_init(void);
  23. #ifdef CONFIG_BOARD_SCACHE
  24. extern struct bcache_ops *bcops;
  25. static inline void bc_enable(void)
  26. {
  27. bcops->bc_enable();
  28. }
  29. static inline void bc_disable(void)
  30. {
  31. bcops->bc_disable();
  32. }
  33. static inline void bc_wback_inv(unsigned long page, unsigned long size)
  34. {
  35. bcops->bc_wback_inv(page, size);
  36. }
  37. static inline void bc_inv(unsigned long page, unsigned long size)
  38. {
  39. bcops->bc_inv(page, size);
  40. }
  41. #else /* !defined(CONFIG_BOARD_SCACHE) */
  42. /* Not R4000 / R4400 / R4600 / R5000.  */
  43. #define bc_enable() do { } while (0)
  44. #define bc_disable() do { } while (0)
  45. #define bc_wback_inv(page, size) do { } while (0)
  46. #define bc_inv(page, size) do { } while (0)
  47. #endif /* !defined(CONFIG_BOARD_SCACHE) */
  48. #endif /* _ASM_BCACHE_H */