ここにこの典型的な要件があります:
カーネルには、 16 ビット チェックサム (明らかにアセンブリ コード) を計算する/arch/arm/lib/csumpartial.S
という名前の関数を持つファイルがあり、この関数は EXPORT シンボルでエクスポートされます。csumpartial()
という名前のファイルにある組み込み関数を使用して、NEON 最適化で同じ関数を実装しました。csumpartial.c
次の要件があります。
ここで、関数 'csumpartial' のバージョンが、アセンブリ バージョンではなく、呼び出し側のカーネル関数によって呼び出されるようにします。
-- これを実現するには、csumpartial.S ファイルを csumpartial.C ファイルに置き換える必要がありますか? しかし、その後、どのように交換するのですか (すべてのことを処理する必要があります)?
この csumpartial.c ファイルは
-mfpu=neon -mfloat-abi=softfp -flax-vector-conversions -O3
、NEON 最適化用の特別なコンパイラ フラグを使用してコンパイルする必要があります。-- では、このコンパイラ フラグについて言及する場所と方法は?
-mfpu=neon -mfloat-abi=softfp -flax-vector-conversions -O3
要するに、アセンブリ バージョンは完全に廃止されるべきであり、カーネルがコンパイルされている間、c バージョンはフラグ付きでコンパイルされるべきです。そして、カーネルの誰かが呼び出したときに、c バージョンの関数を呼び出す必要があります。csumpartial
早い段階で助けていただければ幸いです。
いくつかの入力:
- Linux バージョン 2.6.37
- クロス コンパイラ ツールを使用した arm のクロス コンパイル ( cgt_a8/arm-2009q1)
- ARM cortex-a8 のコーディング
その他の入力について教えてください
注: この編集されたカーネルを使用するのは私だけなので、そのような置き換えに伴うリスクを理解しています。