lin*_*eak 6 c gcc powerpc memory-alignment embedded-linux
我有一个适用于PowerPC的巨大源代码.我需要将它移植到ARM.但是,ARM在未对齐的内存访问上生成h/w异常.所以,我想找到所有可能发生未对齐内存访问异常的实例.我考虑过以下几种选择.
我的问题是,
小智 5
这取决于您的 POWERPC 处理器。像 POWER8 这样的高端服务器处理器几乎不会产生对齐异常。话虽这么说,通常有一个 HID SPR 位可以使对齐异常更频繁地发生。无论哪种方式,在 Linux 下,内核都会处理它们,而用户除了性能损失之外看不到它。您可以设置 prctl(PR_UNALIGN_SIGBUS),这将使内核生成 SIGBUS,而不是处理它们。
在具有 perf 事件的 Linux 中,您可以使用alignment-faults 事件。例如“perf stat -e 对齐错误测试用例”。此外,如果您打开 CONFIG_PPC_EMULATED_STATS,您将获得一个名为“emulated_instructions”的 debugfs 条目,其中有一个用于未对齐访问的条目。