Цитата(prottoss @ Feb 10 2016, 05:29)

Но как быть со структурами данных? Неужели там тоже этого не требуется?
Выравнивается любая структура или массив. На это есть совершенно четкие правила. Массив байтов выравнивается на адрес, кратный одному. Массив двухбайтовых целых - на адрес, кратный двум. Адреса начала структур и размер структур выравиваются на адрес, кратный размеру наибольшего члена но не больше требований платформы, то есть 4 байт для ARM.
Цитата(prottoss @ Feb 10 2016, 05:29)

В принципе, я нашел как договорится с компилятором с помощью __attribute__(align(4)). Блин, но я тогда гвоздями прибью этот код к конкретному компилятору
Да.
Цитата(prottoss @ Feb 10 2016, 05:29)

И, опять же не понятно, почему для М3 компилятор данные выравнивает, а для М4 нет?
Вероятнее всего там вам просто повезло.