96bitの割り込みマスクを作るには?

まやさんがBF548へのTOPPERS/JSPの移植で躓いている様子。

BF548のハードウェアリファレンスマニュアルを確認すると、IRQが96種類定義されています。他のプロセッサでは64種以内におさまっていたため、割り込みマスクをunsigned long longで各ビットに割り当てて表現できていたわけですが、int128という定義がないため、配列を使用しないと96bitを表現できません。

私だったら、という前提でお話ししますが、これは単にchg_ims()やget_ims()の定義を変えてしまいます。たとえば

typdef unsigned int[3] MS;
extern ER chg_ims ( MS ims );
extern ER get_ims ( MS ims );

typedefの使い方、これでいいんでしたっけ orz