Rev 423 | Rev 468 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 423 | Rev 457 | ||
---|---|---|---|
Line 41... | Line 41... | ||
41 | */ |
41 | */ |
42 | 42 | ||
43 | #define CS_ENTER_BARRIER() __asm__ volatile ("" ::: "memory") |
43 | #define CS_ENTER_BARRIER() __asm__ volatile ("" ::: "memory") |
44 | #define CS_LEAVE_BARRIER() __asm__ volatile ("" ::: "memory") |
44 | #define CS_LEAVE_BARRIER() __asm__ volatile ("" ::: "memory") |
45 | 45 | ||
46 | #ifdef __STRONG_ORDERING__ |
46 | #if (FENCES == p4) |
47 | - | ||
48 | #define memory_barrier() |
47 | # define memory_barrier() __asm__ volatile ("mfence\n" ::: "memory") |
49 | #define read_barrier() |
48 | # define read_barrier() __asm__ volatile ("sfence\n" ::: "memory") |
- | 49 | # define write_barrier() __asm__ volatile ("lfence\n" ::: "memory") |
|
50 | #define write_barrier() |
50 | #elif (FENCES == p3) |
51 | - | ||
- | 51 | # define memory_barrier() __asm__ volatile ("xchgl %%eax,%%eax\n" ::: "memory") |
|
- | 52 | # define read_barrier() __asm__ volatile ("sfence\n" ::: "memory") |
|
- | 53 | # define write_barrier() __asm__ volatile ("xchgl %%eax,%%eax\n" ::: "memory") |
|
52 | #else |
54 | #else |
53 | - | ||
54 | #define memory_barrier() __asm__ volatile ("mfence\n" ::: "memory") |
- | |
55 | #define read_barrier() __asm__ volatile ("sfence\n" ::: "memory") |
55 | # error Unsupported FENCES value |
56 | #define write_barrier() __asm__ volatile ("lfence\n" ::: "memory") |
- | |
57 | - | ||
58 | #endif |
56 | #endif |
59 | 57 | ||
60 | #endif |
58 | #endif |