ARM Linux mantiene un elenco di gestori di allineamento eccezioni,
$ cat /proc/cpu/alignment
User: 0
System: 0
Skipped: 0
Half: 0
Word: 0
DWord: 0
Multi: 0
User faults: 0 (ignored)
È attivo solo con procfs , ma è difficile immaginare un sistema senza procfs . Il codice specifico che gestisce questo è in allineamento.c. Puoi usare echo 3 > /proc/cpu/alignment
per avere una correzione di Linux l'istruzione e fornire alcuni dmesg
produzione. Generalmente, la gestione degli accessi non allineati tramite emulazione è molto inefficiente. È meglio correggere il codice. Il segnale opzione con un debugger collegato dovrebbe fornire qualche indizio sull'origine dell'eccezione.
Leggi il manuale.;-)
Linux può eseguire la correzione per te o avvisarti dell'accesso.
Puoi abilitare il comportamento in /proc/cpu/alignment, vedi http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment per una spiegazione dei diversi valori.
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