00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 AO_INLINE void
00031 AO_nop_read(void)
00032 {
00033 AO_compiler_barrier();
00034 }
00035
00036 #define AO_HAVE_NOP_READ
00037
00038 #ifdef AO_HAVE_load
00039
00040 AO_INLINE AO_t
00041 AO_load_read(const volatile AO_t *addr)
00042 {
00043 AO_t result = AO_load(addr);
00044 AO_compiler_barrier();
00045 return result;
00046 }
00047 #define AO_HAVE_load_read
00048
00049 #define AO_load_acquire(addr) AO_load_read(addr)
00050 #define AO_HAVE_load_acquire
00051
00052 #endif
00053
00054 #ifdef AO_HAVE_char_load
00055
00056 AO_INLINE AO_t
00057 AO_char_load_read(const volatile unsigned char *addr)
00058 {
00059 AO_t result = AO_char_load(addr);
00060 AO_compiler_barrier();
00061 return result;
00062 }
00063 #define AO_HAVE_char_load_read
00064
00065 #define AO_char_load_acquire(addr) AO_char_load_read(addr)
00066 #define AO_HAVE_char_load_acquire
00067
00068 #endif
00069
00070 #ifdef AO_HAVE_short_load
00071
00072 AO_INLINE AO_t
00073 AO_short_load_read(const volatile unsigned short *addr)
00074 {
00075 AO_t result = AO_short_load(addr);
00076 AO_compiler_barrier();
00077 return result;
00078 }
00079 #define AO_HAVE_short_load_read
00080
00081 #define AO_short_load_acquire(addr) AO_short_load_read(addr)
00082 #define AO_HAVE_short_load_acquire
00083
00084 #endif
00085
00086 #ifdef AO_HAVE_int_load
00087
00088 AO_INLINE AO_t
00089 AO_int_load_read(const volatile unsigned int *addr)
00090 {
00091 AO_t result = AO_int_load(addr);
00092 AO_compiler_barrier();
00093 return result;
00094 }
00095 #define AO_HAVE_int_load_read
00096
00097 #define AO_int_load_acquire(addr) AO_int_load_read(addr)
00098 #define AO_HAVE_int_load_acquire
00099
00100 #endif