【发布时间】:2011-02-09 01:40:04
【问题描述】:
我想知道这段代码如何将指针对齐到 64 位边界?我在 uboot cpu/mpc85xx/ether_fcc.c 中找到了这段代码。这里底层以太网控制器要求缓冲区指针与 64 位边界对齐。
uint cbd_bufaddr;
volatile uchar *NetRxPackets[PKTBUFSRX];
cbd_bufaddr = (uint)NetRxPackets[i];
我相信以下检查是强制性的,以确保指针是 64位对齐,但我在uboot代码的任何地方都看不到它。
if (cbd_bufaddr % 8 != 0)
cbd_bufaddr += 8 - cbd_bufaddr % 8;
如果有人能指出我是否遗漏了一些明显的东西,我将不胜感激?
【问题讨论】:
-
你还没有指出 NetRxPackets[i] 中的值是从哪里来的,这就是需要对齐的地方。
标签: c memory pointers alignment