gpt4 book ai didi

c - 在 PowerPC 中生成未对齐的内存访问异常

转载 作者:太空狗 更新时间:2023-10-29 17:22:09 28 4
gpt4 key购买 nike

我有大量可在 PowerPC 上运行的源代码。我需要将它移植到 ARM。但是,ARM 在未对齐的内存访问上生成硬件异常。所以,我想找到所有可能发生未对齐内存访问异常的实例。我考虑了以下选项。

  1. 在 gcc 中使用 -Wcast-align,它会针对未对齐的访问发出警告。
  2. 使 PowerPC 生成未对齐的异常。对于 ARM,有一个选项/proc/cpu/alignment,用户可以通过它来决定如何处理异常。但是,PowerPC 没有这样的选项。

我的问题是,

  1. 有没有办法让PowerPC产生未对齐的内存访问异常?
  2. 有没有更好的方法来找出源代码中所有未对齐的内存访问?

最佳答案

  1. 这取决于您的 POWERPC 处理器。像 POWER8 这样的高端服务器处理器几乎不会产生对齐异常。也就是说,通常有一个 HID SPR 位可以使对齐异常更频繁地发生。无论哪种方式,在 Linux 下,内核都会处理它们并且用户不会看到它,除了性能损失之外。您可以设置 prctl(PR_UNALIGN_SIGBUS),这将使内核生成 SIGBUS,而不是处理它们。

  2. 在带有 perf 事件的 linux 中,您可以使用 alignment-faults 事件。例如“perf stat -e alignment-faults testcase”。此外,如果您打开 CONFIG_PPC_EMULATED_STATS,您将获得一个名为“emulated_instructions”的 debugfs 条目,其中包含未对齐访问的条目。

关于c - 在 PowerPC 中生成未对齐的内存访问异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785392/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com