gnuツールチェーンでのTalktThrough

VisualDSP++版で動かしたソースをSUSEに持ってき、わずかな修正で動作することを確認しました。修正点は

  • ccblkfn.hで定義されている組み込み関数をインライン・アセンブラで置き換える

というもので、組込み関数がgcc標準ではないので当然といえば当然と言う改造です。

ssync組み込み関数

gcc 4.0.xよりgnu.orgのgccソースツリーに正式にBlackfinが組み込まれました。gccのマニュアルによれば、現在二つの組み込み関数が利用可能です。

void __builtin_bfin_csync (void)
void __builtin_bfin_ssync (void)

機能は自明ですね。今回TalkThroughをVisualDSP++から移植するに当たり、ccblkfn.hのssync()がないことが問題になりました。ssync()、ccsyn()は

asm( "ssync;" );
asm( "csync;" );

を使えば代用でき、かつ、どちらの環境でも利用できます。組み込み関数を使うかインライン・アセンブラを使うかはまだ決めかねています。