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

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef _ASM_PPC64_MEMORY_H_ 
  2. #define _ASM_PPC64_MEMORY_H_ 
  3. /*
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version
  7.  * 2 of the License, or (at your option) any later version.
  8.  */
  9. #include <linux/config.h>
  10. /*
  11.  * Arguably the bitops and *xchg operations don't imply any memory barrier
  12.  * or SMP ordering, but in fact a lot of drivers expect them to imply
  13.  * both, since they do on x86 cpus.
  14.  */
  15. #ifdef CONFIG_SMP
  16. #define EIEIO_ON_SMP "eieion"
  17. #define ISYNC_ON_SMP "ntisync"
  18. #else
  19. #define EIEIO_ON_SMP
  20. #define ISYNC_ON_SMP
  21. #endif
  22. static inline void eieio(void)
  23. {
  24. __asm__ __volatile__ ("eieio" : : : "memory");
  25. }
  26. static inline void isync(void)
  27. {
  28. __asm__ __volatile__ ("isync" : : : "memory");
  29. }
  30. #ifdef CONFIG_SMP
  31. #define eieio_on_smp() eieio()
  32. #define isync_on_smp() isync()
  33. #else
  34. #define eieio_on_smp() __asm__ __volatile__("": : :"memory")
  35. #define isync_on_smp() __asm__ __volatile__("": : :"memory")
  36. #endif
  37. #endif