(toppers-users 2529) コンフィギュレータのアライメント
takaya_kakizaki @ gmx.yamaha.com
takaya_kakizaki @ gmx.yamaha.com
2006年 9月 13日 (水) 13:37:14 JST
柿崎です。
最近のMLでアライメントの話が出たので一言言わせてください。
コンフィギュレータが生成するスタティック配列は、
(mbfとかmpf,mplとかでバッファ領域をNULL指定すると生成される)
static VP __message_buffer_MBF_ID1[TCOUNT_VP(256)];
のような形で定義されるので、アライメントとしては
VP型の値が格納できるアライメントに整列されるのが普通です。
なので完全に処理系依存なんですよね。
(32bitのアドレス空間を持つプロセッサならVPは4バイトなので問題にならないの
ですが)
4バイトアライメントを保証したいなら
static VP __attribute__((aligned(4)))
message_buffer_MBF_ID1[TCOUNT_VP(256)];
のような形でコンフィギュレータがコードを生成してくれるとよいのですが。
(でもこうするとgcc以外のコンパイラではどうするかという問題が残ります。)
さらに、FI4ではカーネルメモリを
UB _kernel_bufmgr_buffer[TSIZE_KERNEL_BUFFER];
と取るので、処理系によってはバスエラーが発生する可能性が
ぷんぷんするのですが。
せめて上と同じように
VP _kernel_bufmgr_buffer[TCOUNT_VP(TSIZE_KERNEL_BUFFER)];
とすべきではないでしょうか。
------------------------
柿崎 貴也
ヤマハ株式会社 サウンドネットワーク事業部
サウンドネット開発部
E-mail: kakizaki @ soundnet.yamaha.co.jp