ARM Linux は アライメント ハンドラ のリストを保持しています 例外、
$ cat /proc/cpu/alignment
User: 0
System: 0
Skipped: 0
Half: 0
Word: 0
DWord: 0
Multi: 0
User faults: 0 (ignored)
procfs でのみ有効です ですが、procfs のないシステムを想像するのは難しいです .これを処理する特定のコードは、alignment.c にあります。 echo 3 > /proc/cpu/alignment
を使用できます Linux を修正する 命令といくつかの dmesg
を提供します 出力。一般に、エミュレーションによるアライメントされていないアクセスの処理は非常に非効率的です。コードを修正することをお勧めします。 シグナル デバッガーが接続されたオプションは、例外の原因に関する手がかりを与えるはずです.
マニュアルを読んでください。;-)
Linux が修正を行ったり、アクセスについて警告したりできます。
/proc/cpu/alignment で動作を有効にすることができます。さまざまな値の説明については、http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment を参照してください。
0 - Do nothing (default behavior)
1 - Warning in kernel-log with PC and Memory-Address printed.
2 - Fixup error
3 - Warn and Fixup
4 - Send a SIGBUS to the process
5 - Send SIGBUS and output Warning