4.8.2. 对齐支持

缺省情况下,编译器使用 ARMv6 未对齐访问支持,通过允许 LDRSTR 指令加载自和存储到不在自然字边界上对齐的字,来加快对压缩结构的访问。

您可以从处理器内核使用 CP15 寄存器 1 中的 UA 位直接控制 ARMv6 中的对齐支持。 有四种可能的组合:

CP15 寄存器 1 中的 U=0A=0

启用遗留的或 ARMv6 以前的对齐模式,其中未对齐的加载循环已加载的值。

使用 --cpu 5TE 命令行选项编译时,只有 RVCT 支持此运算模式。

Note

使用 --cpu 5TE 命令行选项编译时,请注意无法使用 ARMv6 指令。

CP15 寄存器 1 中的 U=0A=1

启用模 8 对齐检验,不包括未对齐访问。

RVCT 工具集不支持此运算模式。

CP15 寄存器 1 中的 U=1A=0

启用 ARM 内核的未对齐支持。 另外,也可以通过尝试将 UBITINIT 输入到内核 HIGH 进行重置,从而启用未对齐访问。

Note

使用 ARMv6 的缺省选项编译的代码只有当在 ARM 内核上启用了未对齐支持时才能正确运行。

CP15 寄存器 1 中的 U=1A=1

在 ARMv6 目标上启用模 4 对齐检验,不包括未对齐访问。

启用模 4 对齐检验时,必须使用合适的选项编译代码:

  • 对于 RVCT 2.x,使用 --memaccess -UL41

  • 对于 RVCT 3.0 和更高的版本,使用 --no_unaligned_access

Note

不提倡使用 --memaccess 选项,并且会在将来的版本中删除此选项。

有关详细信息,请参阅:

Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0205HC
Non-Confidential