4

我发现 flush_dcache_page() 在 x86 架构上的 linux 内核中什么都不做,如下所示

包括/asm-generic/cacheflush.h

Line 17    #define flush_dcache_page(page) do {} while (0)

我认为 x86 架构上有缓存刷新指令“CLFLUSH”,它可用于此页面刷新。

但是,flush_dcache_page() 不会像上面的源代码那样运行任何 CPU 指令。

为什么 flush_dcache_page() 不在 x86 架构上运行任何指令?

它是否保证将 dcache 中的页面写入主内存?

4

1 回答 1

3

From https://www.kernel.org/doc/Documentation/cachetlb.txt

"If D-cache aliasing is not an issue, this routine may simply be defined as a nop on that architecture."

于 2014-06-11T20:18:58.723 回答