这个问题出现在Power8 内核加密补丁中。该补丁使用 Power8 内置插件提供 AES。在加载 VSX 寄存器时,我们需要在 little-endian 机器上运行时执行 128 位字节序反转,以确保 VSX 寄存器加载正确的值。
在编译时,我们可以检查像__BYTE_ORDER__
. 但是,我相信我们应该在运行时检查机器状态寄存器。如果msr.le=1
,那么我们执行字节序交换。另请参阅AltiVec 编程环境手册,第 3.1.4 节,p。3-5。
我们如何使用内置函数在运行时检查机器状态寄存器?