パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

ARMユーザーモードでCPUキャッシュフラッシュ方法」記事へのコメント

  • AndroidのdalvikVMのJITコンパイラでは、cacheflush()を使ってフラッシュしてますよ。
    機能していないように見えるということで思い当たる点としては、man cacheflush で出てくるのはMIPS向けの記述で、ARMに対しては間違っているということ。
    具体的には、manだと第3引数にICACHE,DCACHE,BCACHEのいずれかを指定するように見えますが、ARMの場合この引数は0でなければいけません。

    ちなみに、キャッシュ制御用のmcr命令のうち、キャッシュフラッシュ等の一部のオペレーションはユーザモードでも実行可能なので、ポータビリティ無視でよければアセンブラで直接キャッシュフラッシュのコードを書くことはできます。
    • by Anonymous Coward on 2014年03月17日 23時54分 (#2564906)

      もう解決したようですが、cacheflush()を使ってるのはAndroidの古いバージョンで、最新のdalvikVMだとgcc拡張の__builtin__clear_cache()を使ったCPUアーキテクチャに依存しないコードに書き換わってるようですね(dvmCompilerCacheFlush()を参照 [googlesource.com])。
      こちらを使った場合も、ARMの場合はlibgcc.a内のcacheflush syscallを呼び出す関数を呼ぶので、処理内容としては同じになります。

      親コメント

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

処理中...