on risc-v, initialize core_stacktops; fix halt
[akaros.git] / kern / arch / riscv / ros / membar.h
1 #ifndef ROS_INC_ARCH_MEMBAR_H
2 #define ROS_INC_ARCH_MEMBAR_H
3
4 /* Full CPU memory barrier */
5 #define mb() __sync_synchronize()
6 /* Compiler memory barrier */
7 #define cmb() ({ asm volatile("" ::: "memory"); })
8 /* Partial CPU memory barriers */
9 #define rmb() mb()
10 #define wmb() mb()
11 #define wrmb() mb()
12 #define rwmb() mb()
13
14 /* Forced barriers, used for string ops, SSE ops, dealing with hardware, or
15  * other places where you avoid 'normal' x86 read/writes (like having an IPI
16  * beat a write) */
17 #define mb_f() mb()
18 #define rmb_f() rmb()
19 #define wmb_f() wmb()
20 #define wrmb_f() wrmb()
21 #define rwmb_f() rwmb()
22
23 #endif /* ROS_INC_ARCH_MEMBAR_H */