#define __io_bw() __asm__ __volatile__("fence w,o" : : : "memory");
#define __io_aw() do {} while (0)
void static io_write64_raw( volatile void *addr,u64 val)
{
__io_bw();
asm volatile("sd %0, 0(%1)" : : "r" (val), "r" (addr));
__io_aw();
}
不太理解这组汇编代码在执行什么,gui求da lao讲解下
https://zhuanlan.zhihu.com/p/372433134
__io_bw() 是用来强制同步高速缓存(cache)与内存(memory)中的数据。
__io_aw()是用来等待同步更新完成的空运行指令。
CPU为了提高内存读写数据速度,一般会在两者之间加上高速缓存(cache)。假如cache与memory数据不同步,会导致程序异常。