【发布时间】:2014-09-11 10:43:04
【问题描述】:
我有一个可在 PowerPC 上运行的庞大源代码。我需要将它移植到ARM。但是,ARM 在未对齐的内存访问时会生成硬件异常。所以,我想找到所有可能发生未对齐内存访问异常的实例。我考虑了以下选项。
- 在 gcc 中使用 -Wcast-align 会引发未对齐访问的警告。
- 使 PowerPC 产生未对齐的异常。对于 ARM,有一个选项 /proc/cpu/alignment 用户可以通过它来决定如何处理异常。但是,PowerPC 没有这样的选择。
我的问题是,
- 有没有办法让 PowerPC 产生未对齐的内存访问异常?
- 有没有更好的方法来找出源代码中所有未对齐内存访问的发生情况?
【问题讨论】:
-
如何让PowerPC产生未对齐的内存访问异常——内核中的一些选项(CONFIG_ALIGNMENT_TRAP等)?
-
您也可以移植、捕获和修复它。 :)
-
PowerPC 总是生成对齐异常,除了 AltiVec 加载/存储。当然,您的操作系统可能会默默地处理这些异常,但那是另一回事了。
-
@someuser:我现在无法移植代码,因为硬件还没有准备好。
-
@PaulR:好的。那么,我是否必须创建一个 /proc/cpu/alignment 条目并在内核中处理它?
标签: c gcc embedded-linux memory-alignment powerpc