2009-08-23 3 views
1

ARMv6 представляет отличную возможность - unaligned доступ к памяти, которые делают некоторые вещи в коде намного проще и быстрее. Но microsoft предоставляет API для него только в winCE6. И большинство КПК теперь основаны на WinMobile6 (который находится на CE 5.x). И выровненный доступ по умолчанию отключен :(Как включить несвязанный доступ ARMv6 на WinMobile6?

Я пытаюсь установить невыровненный флаг в регистре CP15, но это не работает - у меня есть аварии на прочитанных выровненных данных

Можно ли включить. выровненным доступ на WinMobile6


Edit:.. Я нашел инструмент, который может позволить невыровненное доступ, но я хочу, чтобы вкл/выкл это из моего кода это nueAdvancedProcessor

ответ

1

Eсть una (бит U в регистре управления CP15), а также проверочный блок выравнивания (бит A). Убедитесь, что у вас есть правильная комбинация для того, что вы хотите сделать. В частности, если бит А установлен, все ваши неустановленные обращения вызовут исключение для исключения данных, даже если у вас включен бит U. Ознакомьтесь с документами ARM по этому вопросу - все доступно по адресу http://www.arm.com.

В частности, вы хотите, чтобы раздел A2.8.2 «Невыраженный доступ к данным в системах ARMv6» в Справочном руководстве по архитектуре ARM. Номер документа ARM DDI 0100I. Он называется «Справочное руководство по архитектуре ARMv5», но содержит исходную информацию ARMv6. Я надеюсь, что эта ссылка будет работать: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html

+0

Спасибо за ответ! Да, я прочитал этот dosc, но похоже, что есть некоторые ограничения на Windows Mobile. Возможно, мне нужно запустить код из драйвера или что-то в этом роде. – zxcat

+1

Абсолютно. Регистры CP15 могут быть доступны только из привилегированных режимов. Я не очень хорошо знаком с Windows Mobile, но вы можете попробовать установить эти биты в загрузчике или другом раннем ассемблерном коде, а затем надеяться, что ОС не ударит их для вас позже. –