Go to the source code of this file.
◆ dmb
◆ dsb
◆ force_read
#define force_read |
( |
|
x | ) |
(*(volatile typeof(x) *)&(x)) |
◆ isb
◆ load_acquire
#define load_acquire |
( |
|
p | ) |
|
Value:({ \
typeof(*p) ___p1; \
switch (sizeof(*p)) { \
case 4: \
asm volatile ("ldar %w0, %1" \
: "=r" (___p1) : "Q" (*p) : "memory"); \
break; \
case 8: \
asm volatile ("ldar %0, %1" \
: "=r" (___p1) : "Q" (*p) : "memory"); \
break; \
} \
___p1; \
})
Definition at line 31 of file barrier.h.
◆ load_acquire_exclusive
#define load_acquire_exclusive |
( |
|
p | ) |
|
Value:({ \
typeof(*p) ___p1; \
switch (sizeof(*p)) { \
case 4: \
asm volatile ("ldaxr %w0, %1" \
: "=r" (___p1) : "Q" (*p) : "memory"); \
break; \
case 8: \
asm volatile ("ldaxr %0, %1" \
: "=r" (___p1) : "Q" (*p) : "memory"); \
break; \
} \
___p1; \
})
Definition at line 61 of file barrier.h.
◆ mb
◆ nop
#define nop |
( |
| ) |
asm volatile("nop"); |
◆ rmb
◆ sev
◆ sevl
#define sevl |
( |
| ) |
asm volatile("sevl" : : : "memory") |
◆ store_release
#define store_release |
( |
|
p, |
|
|
|
v |
|
) |
| |
Value:do { \
switch (sizeof(*p)) { \
case 4: \
asm volatile ("stlr %w1, %0" \
: "=Q" (*p) : "r" (v) : "memory"); \
break; \
case 8: \
asm volatile ("stlr %1, %0" \
: "=Q" (*p) : "r" (v) : "memory"); \
break; \
} \
} while (0)
Definition at line 47 of file barrier.h.
◆ store_release_exclusive
#define store_release_exclusive |
( |
|
p, |
|
|
|
v |
|
) |
| |
Value:({ \
int ret; \
switch (sizeof(*p)) { \
case 4: \
asm volatile ("stlxr %w0, %w2, %1" \
: "=&r" (ret), "=Q" (*p) : "r" (v) \
: "memory"); \
break; \
case 8: \
asm volatile ("stlxr %w0, %2, %1" \
: "=&r" (ret), "=Q" (*p) : "r" (v) \
: "memory"); \
break; \
} \
!ret; \
})
Definition at line 78 of file barrier.h.
◆ wfe
◆ wfi
◆ wmb