*参照元 [#pc74718f] #backlinks *説明 [#b6032059] -パス: [[linux-2.6.33/arch/arm/include/asm/cacheflush.h]] --CONFIG_CPU_CACHE_VIPT 無効のとき -パス: [[linux-2.6.33/arch/arm/mm/flush.c]] --CONFIG_CPU_CACHE_VIPT 有効のとき -FIXME: これは何? --説明 **引数 [#x1f92ad8] -struct vm_area_struct *vma -- --[[linux-2.6.33/vm_area_struct]] -unsigned long start -- -unsigned long end -- **返り値 [#g2020692] -なし **参考 [#w9549f6c] *実装 [#d5d51dde] **CONFIG_CPU_CACHE_VIPT 無効の場合 [#kb56f19c] #ifndef CONFIG_CPU_CACHE_VIPT ...(中略)... #define flush_cache_range(vma,start,end) \ vivt_flush_cache_range(vma,start,end) -vivt_flush_cache_range を呼ぶ --[[linux-2.6.33/vivt_flush_cache_range()]] ...(中略)... **CONFIG_CPU_CACHE_VIPT 有効の場合 [#b0aa7481] ***linux-2.6.33/arch/arm/include/asm/cacheflush.h [#p008da05] #else ...(中略)... extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); -下記、参照 ...(中略)... #endif ***linux-2.6.33/arch/arm/mm/flush.c [#j9a60783] void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { if (cache_is_vivt()) { - --[[linux-2.6.33/cache_is_vivt()]] vivt_flush_cache_range(vma, start, end); return; } - --[[linux-2.6.33/vivt_flush_cache_range()]] if (cache_is_vipt_aliasing()) { - --[[linux-2.6.33/cache_is_vipt_aliasing()]] asm( "mcr p15, 0, %0, c7, c14, 0\n" " mcr p15, 0, %0, c7, c10, 4" : : "r" (0) : "cc"); } if (vma->vm_flags & VM_EXEC) __flush_icache_all(); - --[[linux-2.6.33/VM_EXEC]] - --[[linux-2.6.33/__flush_icache_all()]] } *コメント [#fb719f7b]