How to enable ARMv6 unaligned access on WinMobile6?

青春壹個敷衍的年華 提交于 2019-12-23 03:11:21

问题


ARMv6 introduce a great feature - unaligned memory access, which make some things in code much more simplier and faster. But microsoft gives API for it only in winCE6. And most PDAs now based on WinMobile6 (which is on CE 5.x). And unaligned access is disabled by default :(

I've try to set unaligned flag in CP15 register, but this doesn't work - I have a crash on read unaligned data.

Is it possible to enable unaligned access on WinMobile6?


Edit: I've found the tool, which can enable unaligned access, but I want to on/off it from my code. It's nueAdvancedProcessor.


回答1:


There is an unaligned access flag (the U bit in CP15 control register) and also an alignment fault checker (the A bit). Make sure you have the right combination for what you want to do. In particular, if the A bit is set, all of your unaligned accesses will cause a data abort exception, even if you have the U bit on. Check out the ARM docs on that - all available at http://www.arm.com.

In particular, you want Section A2.8.2 "Unaligned data access in ARMv6 systems" in the ARM Architecture Reference Manual. Document number ARM DDI 0100I. It's titled "ARMv5 Architecture Reference Manual", but contains the initial ARMv6 information. I hope this link works: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html



来源:https://stackoverflow.com/questions/1318844/how-to-enable-armv6-unaligned-access-on-winmobile6

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!